List <int> collecion不能用作DataGridView的数据源

时间:2016-08-30 08:48:34

标签: c# winforms datagridview

我试图将List对象分配给Windows窗体应用程序中DataGridView的数据源。但它显示了网格中的空数据。 是否有任何理由或我错过了什么?

List<int> sample = new List<int>();
sample.Add(1);
this.dataGridView1.DataSource = sample;

但是如果我将“List”集合分配给网格,它的工作原理如下,

List<string> sample = new List<string>();
sample.Add("1");
this.dataGridView1.DataSource = sample;

enter image description here

2 个答案:

答案 0 :(得分:1)

它正在工作的原因是DataGridView查找要在对象上显示的属性。 String有一个属性Length,因此它显示在网格上。整数没有任何属性。

要使其工作,您可以创建一个具有int类型属性的新类。然后,您可以将这些自定义对象的列表提供给DataGridView并控制显示的内容。

修改: This answer有一个如何解决问题的示例。

答案 1 :(得分:0)

DataGridView要求列表中的对象具有属性。字符串具有属性“长度”,因此显示。数字1是字符串的长度,而不是字符串的内容。

如果您不想创建新类,可以使用以下匿名类型:

List<int> sample = new List<int>();
sample.Add(1);
this.dataGridView1.DataSource = sample.Select(k=> new {Value = k}).ToList();