在我的DataGridView
我已将 AllowUserToDeleteRows 设置为True。
当我将DataGridView
的{{1}}设置为DataSource
IQueryable
我可以从中删除行,但是当我将其设置为var dc = new Data.CustomersDataContext();
var q = dc.Customers;
dataGridView1.DataSource = q;
List<T>
我不能再删除行了(当我按下删除按钮时没有任何反应)
如何将var dc = new Data.CustomersDataContext();
var l = dc.Customers.ToList();
dataGridView1.DataSource = l;
保留为DataSource
并且还能删除行?
答案 0 :(得分:1)
这是因为DataGridView
仅在与IBindingList
实现绑定时才允许删除行(请参阅下面的注释),IBindingList.AllowRemove
返回true。
您可以将列表包装到BindingList<T>
,默认情况下允许删除项目:
dataGridView1.DataSource = new BindingList<Customer>(dc.Customers.ToList());
注意。 Data.CustomersDataContext.Customers
实施IListSource
,其中IBindingList
返回AllowRemove == true
,这就是您的第一个案例正常工作的原因。 DGV
了解IListSource
并使用IListSource.GetList()
结果作为数据来源。