您的位置:首页 > 其它

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

2011-01-05 21:17 447 查看
当从数据库读取到数据后,用
BindingSource
绑定,然后再用
GridView
显示。现在要一条一条删除记录,且
GridView
也要动态变化。

变量已绑定
BindingSource

Bind

GridView

Grid

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

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

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

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

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

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

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

再试一下,还是不行。

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

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

(Bind.DataSource as DataTable).Rows[Bind.Position].Delete();
(Bind.DataSource as DataTable).AcceptChanges();
Grid.DataSource=Bind;


大功告成!

也就是要先删除后提交。你得把
BindingSource
当成
DataTable
来操作,然后再删除某行,
Bind.Position
指示为当前行,也就是你的鼠标选中的那行。当然
DataRow
能直接调用的函数就只有
Delete
了,一开始,只用了这个函数,但发现还是不行的,因为用
Delete
只是把当前行标记为
Deleted
,要完全删除还要用到
AcceptChanges
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐