从程序化的网格视图中删除行

时间:2011-10-31 14:52:17

标签: c# winforms datagridview

我有gridview,它的数据源是list<string>,我添加了一个复选框列来选择我要删除的行,然后按删除。

attachdatagrid.DataSource = ConceptProperties.conceptsattachmentsfilename[mouseOverIndex].Select(x => new { FileName = x }).ToList();

问题是我的

  

gridview EditMode

属性是EditOnKeystroke,当我写

if ((bool)dr.Cells[0].Value != false)
                        {
                            found = true;
                            ConceptProperties.conceptsattachments[mouseeditIndex].RemoveAt(dr.Index);
                            ConceptProperties.conceptsattachmentsfilename[mouseeditIndex].RemoveAt(dr.Index);
                            attachdatagrid.Rows.RemoveAt(dr.Index);
                        }

我有例外:

  

除非DataGridView是,否则无法以编程方式删除行   数据绑定到支持更改通知的IBindingList   允许删除。

如何删除该行?

2 个答案:

答案 0 :(得分:2)

您最好将网格绑定到绑定源并对其进行所有操作(绑定源)而不是列表本身。 您可以通过将绑定源组件放到表单中,然后将其数据源设置为列表,将网格的数据源设置为绑定源来实现。

IList不支持更改通知。 IBindingList(绑定源实现)。

答案 1 :(得分:0)

在你的情况下,足以从列表中删除所需的数据,并且当它绑定到网格时,列表中的更改将自动在UI控件上传播。

换句话说:不要拨打attachdatagrid.Rows.RemoveAt(dr.Index)

希望这有帮助。