更改Datagridview值时更改数据表列值

时间:2013-02-17 18:20:22

标签: c# winforms datagridview

我在表单上有两个datagridview控件。当我们在DGV1中选择更改时,DGV2行会根据DGV1中的ID进行过滤。现在,如果我在DGV2的单元格中进行更改,则会在DGV1中更新名为Amount的列。我已经实现了这个使用单元格值更改和它的工作正常。为此我使用datatable.So当我想保存数据库中的dgv2中的更改。在DGV2中输入的值不保存。为此我也在改变datable中的值取决于行索引。下面是DGV1中的数据


ID Qty UnitPrice Amount
-----------------------

1    20   2        40
2    40   3        120



in DGV2 below is the data

ID  SellQty 
-----------
1    5   
2    10  
1    15
2    10

因此,当用户点击DGV1中的任何单元格时,DGV2行会被过滤(正如您在DGV1中看到的ID = 1,有2个值)。所有这一切都很好。下面是我在Cellvalue中编写的代码行更改了DGV2,以便更新数据表单元格,因为我需要使用foreach循环保存在数据库中。

dtBatch.Rows[i].SetField("SellQty", gvBatchDetails.Rows[i].Cells["SellQty"].Value);

我正在使用变量i(int)。但是当用户在DGV1中输入ID 2时过滤行时,第一行的i值也会变为0.在数据表ID 2中,索引为1.So在这种情况下如何在数据表中进行更改。

1 个答案:

答案 0 :(得分:0)

我通过从datagridview获取所选行来解决了这个问题。

    DataRow[] rowList = QuoteSalesItemSearch.dtBatch.Select("BatchItemID='" + ItemID + "'" + "and BatchNo='" + BatchNo + "'");
  foreach (DataRow dr in rowList)
   dr["SellQty"] = gvBatchDetails.Rows[e.RowIndex].Cells["SellQty"].Value;