DataGridView绑定数据源后,在界面上删除行,数据源没有改变

xiaoxiao2021-02-28  120

      DataGridView.DataSource绑定了table作为数据源,之后再界面上进行操作,新增没有问题,删除行的时候,实际上数据源里面的行数据仍然存在,在保存到数据库后,发现数据没有被删除。 DataTable dt = new DataTable(); dt = ((DataTable)dgv_试剂.DataSource); dt.AcceptChanges(); //这句话很重要,否则删除的行仍然会被保存; Item1 = new TestKitInterItem[dt.Rows.Count]; for (int i = 0; i < Item1.Length; i++) { TestKitItem item = new TestKitItem(); Item1[i] = new TestKitInterItem(); PublicConvert.DataRowToItem(dt.Rows[i], item); Item1[i].TestKitGUID = Item.GUID; Item1[i].ByTestKitGUID = item.GUID; } ,在网上查了资料之后,说是删除实际上只是dt.Rows[i].RowState!=DataRowState.Deleted,但是数据仍然存在,有些人是通过rowstate来过滤掉,有些人使用AcceptChanges(),结果都是可以的。 对我自己来说,因为之前写好了DataRowToItem(),所以也卡在这里了,后来再写了DataGridViewRowToItem(),于是代码改为以下,不用再考虑DataTable的问题了。 DataTable dt = new DataTable(); //dt = ((DataTable)dgv_试剂.DataSource); //dt.AcceptChanges(); //这句话很重要,否则删除的行仍然会被保存; Item1 = new TestKitInterItem[dgv_试剂.Rows.Count]; for (int i = 0; i < Item1.Length; i++) { TestKitItem item = new TestKitItem(); Item1[i] = new TestKitInterItem(); PublicConvert.DataGridViewRowToItem(dgv_试剂.Rows[i], item); //用datagridviewrow给类的对应成员赋值 Item1[i].TestKitGUID = Item.GUID; Item1[i].ByTestKitGUID = item.GUID; }  
转载请注明原文地址: https://www.6miu.com/read-18322.html

最新回复(0)