我试图将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;
答案 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();