【发布时间】:2021-01-27 19:05:40
【问题描述】:
给定代码
class Foo {
public string Value {get; set;}
public int Id {get; set;}
}
List<List<Foo>> fooList = new List<List<Foo>>();
有没有办法将 Multidim ICollection 绑定到属性 Value 上的 DataGridView,当您更改单元格时,对象的 Value 属性会更新?
在这种情况下,列表中的每个 Foo 实例将代表 DataGridView 中的一个单元格,并且行/列将被保留,就像它们在 multidim ICollection 中一样
我所说的 Multidim 的意思是:
List<List<Foo>] => [
List<Foo> => [0,1,2,3,4,5]
List<Foo> => [0,1,2,3,4,5]
List<Foo> => [0,1,2,3,4,5]
List<Foo> => [0,1,2,3,4,5]
]
嵌套列表中的每个元素实际上是 Foo 的实例。
【问题讨论】:
-
用 SelectMany 展平: fooList.SelectMany(x => x).ToList();
-
@jdweng 会保留多暗阵列的行/列吗?
-
你说的multidim array是什么意思? Rank > 1 的数组,例如
Foo[,]? Foo 数组的数组,例如Foo[][],或者,如您所展示的,列表列表(看不到数组)? -
考虑这个...因为你想将
List<List<Foo>>绑定到网格,那么网格中的每一列都是List<Foo>,因为每个List<Foo>可能有不同数量的@987654328 @s 在每个列表中,然后每列可以有不同的行数。即使您“展平”每个List<Foo>列表,使用List<List<Foo>>也只会以一 (1) 列结束,这样每一行在每个单元格中都有不同数量的Foo项目。 -
你真的应该用
winforms和datagridview标记你的问题。因为有datagridview的标签,所以很有可能有人是这方面的专家。
标签: c# .net winforms data-binding datagridview