当另一个网格单元格值更改时,同时更改DataGridView多个单元格值



我在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

最新更新