2010-09-16 24 views
0
List A = new List(); 
A.Add("Apple"); 
A.Add("Banana"); 
A.Add("Pineapple"); 

dataGridView.DataSource = a; 

结果:是列表中每个项目的长度而不是项目本身的长度。 如何让datagridView显示字符串而不是长度。如何在datgridview上显示列表

回答

2

创建一个类,水果

class Fruit 
{ 
    public string Name { get; set; } 
} 

,创造成果的一个泛型列表:

List<Fruit> fruits = new List<Fruit>(); 
fruits.Add(new Fruit() { Name = "Apple" }); 

dataGridView1.DataSource = fruits; 
+0

非常感谢。这是我正在寻找的。 – Ani 2010-09-16 18:56:28

2

,你也可以做一些时髦的LINQ

List<string> A = new List<string>(); A.Add("Apple"); A.Add("Banana"); A.Add("Pineapple"); 
dataGridView.DataSource = (from a in A select new {Value = a}).ToList(); 

编辑

解释一个还有一点,问题是datagridview绑定到对象的默认属性(所以字符串是长度),在字符串中没有真正的属性(例如值),因此您也需要创建DataMember,因此您必须创建一个类,或在我的情况下给它一个只有一个属性(或许多属​​性和设置DataMember)的匿名类

+0

这是第二次。我确信我永远不会忘记这一点。谢谢你的简要解释。 – Ani 2010-09-16 18:57:25

0

那是因为DataGridView查找包含对象的属性。对于字符串,只有一个属性 - 长度。所以,你需要一个这样的字符串包装

public class StringValue 
{ 
    public StringValue(string s) 
    { 
     Value = s; 
    } 
    public string Value { get { return _value; } set { _value = value; } } 
    string _value; 
} 

然后绑定List<StringValue> object到您的网格。只是一个备用的答案

编辑:无意的完成副本的某人在另一个话题中的答案,似乎教我这个人只是从那里复制答案,几年后,我带回了它,无意和道歉