我在c# Winforms应用程序的两个不同选项卡中有两个DataGridView
控件,使用Visual Studio 2019。
第一个网格包含Itemname和Price如下
ITEMNAME PRICE
---------------------
MOUSE 399.00
PRINTER 12000.00
MONITOR 18500.00
在另一个网格中,我显示这些向不同客户发行/销售的项目,如下所示
CUSTOMERNAME ITEMNAME PRICE
-----------------------------------------
ANANT H MOUSE 399.00
JOLLY K MONITOR 18500.00
ANANT H MOUSE 399.00
KIRAN A PRINTER 12000.00
KIRAN A MOUSE 399.00
当第一个网格中任何项目的价格更新时,我希望它在第二个网格中根据匹配的itemname反映出来。例如,如果鼠标价格更改为500.00,它应该立即反映在第二个网格的price列的所有3个单元格中,其中ITEMNAME匹配。
执行此操作的明显选择是运行for循环并与ITEMNAME匹配,并获取PRICE单元格来编辑值。但是,当第二个网格中有大量记录时,这对我来说看起来很繁重且耗时。
是否有任何想法,我可以改变匹配ITEMNAME的价格值的所有值一次,当它的价格变化在第一个网格?
就像我们在EXCEL中做的那样,如果单元格被引用到一个主单元格,当我们改变主单元格的价格值时,所有被引用的单元格值都会自动改变。
好的,我们可以对数据关系做这个:
- 添加一个数据集类型的新文件到你的项目(或者如果你已经有一个,在现有的一个)。打开数据集文件以查看空白设计图面(或与现有表一起)
- 右键单击新建数据表,放入一个名为Products的表,其中包含ProductId, ItemName和Price列,具有合理的数据类型(int, string, float)
- 添加一个新表,我不知道,引号或其他
- 中的引号放置CustomerName, ProductId 的列
- 单击产品表中ProductId的灰色行标题,使线变为蓝色,然后单击引号表的ProductId上的拖放-出现创建数据关系窗口,检查产品是父表,引号是子表(我总是忘记以哪种方式拖动)-交换在顶部的组合或重做另一种方式拖动,如果它是错误的
- 在引号表中添加另一列ProductPrice,类型为float,并将其表达式属性设置为
Parent.Price
- 切换到一个新的表单设计器(现在,只是为了演示它),并打开数据源窗口(查看菜单..其他窗口)。希望你没有使用net core..将product和quotes节点从数据源中拖到表单中(有两个quotes节点,其中一个是products的子节点)。拖拽顶层的,因为你不需要这个演示 的相关绑定行为
运行应用程序,输入一些产品,然后输入报价,然后更改价格。它应该自动更新quote