我有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 允许删除。
如何删除该行?
答案 0 :(得分:2)
您最好将网格绑定到绑定源并对其进行所有操作(绑定源)而不是列表本身。 您可以通过将绑定源组件放到表单中,然后将其数据源设置为列表,将网格的数据源设置为绑定源来实现。
IList不支持更改通知。 IBindingList(绑定源实现)。
答案 1 :(得分:0)
在你的情况下,应足以从列表中删除所需的数据,并且当它绑定到网格时,列表中的更改将自动在UI控件上传播。
换句话说:不要拨打attachdatagrid.Rows.RemoveAt(dr.Index)
希望这有帮助。