2010-09-16 54 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到您的網格。只是一個備用的答案

編輯:無意的完成副本的某人在另一個話題中的答案,似乎教我這個人只是從那裏複製答案,幾年後,我帶回了它,無意和道歉