当从数据库读取到数据后,用 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 !