0

这把我逼上了最近的墙。我有一个List<MyClass>包含多个条目的对象(我们称之为 MyList),并且我有一个DataGridView控件。我可以将控件的 DataSource 属性设置为 MyList。我得到了 MyList 中的所有元素,MyClass 对象的每个成员都有单独的列,非常好。如果我更改任何成员,然后我可以使用调试器查看 MyList 并查看更改的值。

但是假设 MyList 有 10,000 个条目,而我只想查看其中的 10 个。我可以使用 LINQ to Objects 来过滤列表,如下所示:

query = from myObect 
in MyList 
where SomeField == SomeGoodValue select new {myObject.SomeMember};
MyDataGridView.DataSource = query.ToList();

这显示了我想要的数据(好吧,在这种情况下,它选择每个对象的一个​​成员),但不能再编辑数据。

有什么方法可以将过滤后的列表放入 aDataGridView中,并使视图控件可编辑?我正在收集由new块生成的匿名类型的使用使得这不可能。那是对的吗?

4

1 回答 1

0

我不是 100% 确定,但我相信如果您希望您的单元格是可编辑的,您可以从网格中取消绑定您的源并稍后重新绑定它。这并不理想,但是,我会在加载网格视图时取消绑定我的源,然后在保存之前重新绑定它。

Dim myCurrencyManager As CurrencyManager = DirectCast(BindingContext(DataGridView1.DataSource), CurrencyManager)

myCurrencyManager.SuspendBinding()

myCurrencyManager.ResumeBinding()
于 2013-04-24T18:48:28.253 回答