以编程方式从网格视图中删除行

本文关键字:视图 删除行 网格 编程 方式 | 更新日期: 2023-09-27 18:13:06

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

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

问题是我的

显示数据表格编辑模式

属性是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);
                        }

I got exception:

行不能被编程地删除,除非DataGridView被删除数据绑定到IBindingList,该列表支持更改通知和允许删除。

如何删除行?

以编程方式从网格视图中删除行

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

IList不支持更改通知。

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

换句话说:不要调用attachdatagrid.Rows.RemoveAt(dr.Index)