2011-04-05 49 views
0

我這個代碼數據源中的DataGridView

public class Test 
     { 
      public string name; 
      public int age; 

      public Test (string name, int age) 
      { 
       this.name = name; 
       this.age = age; 
      } 
     } 

     private void button1_Click (object sender, EventArgs e) 
     { 
      List <Test> listTest = new List <Test>(); 
      listTest.Add (new Test ("Pavel", 30)); 
      listTest.Add (new Test ("Dima", 48)); 
      listTest.Add (new Test ("Vova", 48)); 
      dataGridView1.DataSource = listTest; 
     } 

DataGridView中顯示三條線,但沒有價值不告訴我,我有錯誤

+0

Ÿ你不接受任何答案。請點擊答案下面的標記。 – Marshal 2011-04-05 11:14:55

+0

你有沒有在代碼的任何地方調用'dataGridView1.DataBind()'? – ysrb 2011-04-05 10:54:04

+0

它是WinForms項目 – emirate 2011-04-05 10:55:28

回答

1

嘗試使名字和年齡作爲屬性。它會解決你的問題。

public class Test 
    { 
     public string Name 
     { 
      get; 
      set; 
     } 
     public int Age 
     { 
      get; 
      set; 
     } 

     public Test(string name, int age) 
     { 
      this.Name = name; 
      this.Age = age; 
     } 
    } 

希望您使用.net 3.5或更多,否則自動屬性不起作用。

下面是截圖

enter image description here

+0

這不適用於我的VS2010與.NET 4.0。即使使用屬性,將DataGridView的DataSource屬性設置爲List(而不是BindingList)的實例也不會顯示出來。它適用於BindingList,但不是List。 – Telaclavo 2012-01-29 20:10:20

+0

@Telaclavo你試過了嗎?我修改了答案,我添加了一張圖片。我只是複製了具有自動屬性的代碼,VS 2010 C#Express版本正常工作。 – Anuraj 2012-01-30 02:18:07

+0

對不起,你是對的。那之後不久我發現了這個問題。我設置了兩次DataSource(由於TextChanged事件),第一次使用未填充的列表,第二次填充列表,並且由於對列表的引用是相同的,第二次賦值給DataSource沒有刷新效果。在DataSource = list賦值之前設置DataSource = null解決了問題。謝謝。 – Telaclavo 2012-01-30 13:12:50