BindingSource不能通过已删除的行访问已删除的信息

当从数据库读取到数据后,用 BindingSource 绑定,然后再用 GridView 显示。现在要一条一条删除记录,且 GridView 也要动态变化。

变量已绑定 BindingSource Bind GridView Grid

我先用鼠标在 Grid 上选中第一行,当删除,执行:

Bind.RemoveCurrent();  // 删除当前的一行

这样运行, Grid 里还是显示原数据。

加上 Grid.DataSource=bind;  Grid 动态显示了。

我再用鼠标在 Grid 选中第一行:

这会出问题了,提示“不能通过已删除的行访问已删除的信息”

好,可能是 Bind 删除当前行后没提交吧,在后面加了句, Bind. ResumeBinding()

再试一下,还是不行。

想到可能不是用这个函数,那就用这个吧 Bind. EndEdit();

不行!在网上找了下,好像就没这个的解决方案,后面经探索,用这个就可以

大功告成!

也就是要先删除后提交。你得把 BindingSource 当成 DataTable 来操作,然后再删除某行, Bind.Position 指示为当前行,也就是你的鼠标选中的那行。当然 DataRow 能直接调用的函数就只有 Delete 了,一开始,只用了这个函数,但发现还是不行的,因为用 Delete 只是把当前行标记为 Deleted ,要完全删除还要用到 AcceptChanges

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值