从DataGridView中删除绑定的项目

时间:2010-10-18 21:49:42

标签: vb.net data-binding datagridview

我有一个对象的List,设置为BindingSource的DataSource,设置为DataGridView的DataSource。然后我添加了一个DataGridViewButtonColumn,我想要点击一下从集合中删除该记录。所以我只是从DataGridView CellClick事件中调用collection.RemoveAt(e.rowIndex)。但是这会产生IndexOutOfRange异常; “1没有价值”..

发生在这里?我可能有一个模糊的想法,但想要确切地了解哪些事件失败等等。我需要做些什么来正确执行此操作?

修改 如果我使用BindingList,这似乎不会发生..但是当使用List时,我遇到了这个问题..

1 个答案:

答案 0 :(得分:1)

您看到错误的原因是因为您最终绑定到ListList不包含您的DataGridView需要接收的更改通知,以反映您所做的更改。

如果您真的想解决此问题,可以执行以下操作:在对List进行更改之前,将BindingSource的DataSource属性设置为Nothing。完成更改后,将List重置为DataSource。

这是一个非常难看的解决方案,你可以想象。您要做的事情是绑定到实现IBindingList的对象,您创建的自定义集合或BindingList

这是进一步调查此问题的合理起点:
DataGridView Control Overview (Windows Forms)