2011-04-05 69 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