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

      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;

    }

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值