2014-10-07 128 views
0

我想绑定我的绑定列表到DataGridView,但并非所有东西都显示了!这是我的代码目前有:除外Person.numbers没有在DataGridView显示(仅ID,FName参数& LName的)事实绑定到DataGridView的集合

public class Person 
{ 
    public int ID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int[] numbers = new int[6] 
} 

public class Data 
{ 
    public static BindingList<Person> persons = new BindingList<Person>(); 
} 

... 

var bl = new BindingList<Person>(persons); 
myGrid.DataSource = bl; 

一切的伟大工程!

任何想法,为什么?

+3

'numbers'是字段,使其属性。 – Sinatr 2014-10-07 12:11:28

+0

我按照建议做的,后面的例子@Felix给了,但我仍然有同样的问题! :x – sWo 2014-10-07 14:11:39

+0

['AutoGenerateColumns'](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.autogeneratecolumns.aspx)'= true'或者您是否手动创建列? – Sinatr 2014-10-07 14:39:59

回答

1

我会尽量让它成为一个属性。编辑:要格式化以便在datagridview中使用,可以使用Singleton模式并将列绑定到格式化字符串,如下例所示。

public class Person 
{ 
    public int ID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public String NumbersString { get; set; } 

    private int[] _numbers; 
    public int[] Numbers 
    { 
     get 
      { 
       return _numbers; 
      } 
     set 
      { 
       _numbers = value; 
       NumbersString = FormatIntoString(_numbers); 

      } 

    } 

    public Person() 
    { 
    numbers = new int[6]; 

    } 


// The write the method that puts the array into a readable form 

private string FormatIntoString(int[] array) 
    { 
    string result = ""; 

    foreach(var x in array) 
     { 
     result += x.ToString() + ","; 
     } 
    return result; 
    } 
+0

嗯,我做了你所说的话,问题依然存在! ;( – sWo 2014-10-07 13:53:33

+0

字段'numbers'是一个数组,你是在为'numbers'的每个元素专用列还是试图将整个数组放入一列? – 2014-10-07 14:49:43

+0

你很可能需要设置'AutoGenerateColumns = false '然后单独创建并绑定每个列[请参阅示例](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumn.datapropertyname.aspx) – 2014-10-07 15:04:24