2014-10-07 2 views
0

바인딩 목록을 DataGridView에 바인딩하려고하지만 모든 것이 표시되지 않습니다! 그건 내가 현재 가지고있는 코드입니다 :컬렉션을 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; 

모든 것이 Person.numbers가있는 DataGridView (단 ID, FNAME & LNAME)에 표시되지는 사실을 제외하고 잘 작동합니다!

그 이유는 무엇입니까?

+3

'numbers'는 필드입니다. – Sinatr

+0

필자는 제안한대로했는데 @Felix 예제도 따라했지만 여전히 같은 문제가 있습니다! : x – sWo

+0

['AutoGenerateColumns'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.autogeneratecolumns.aspx)'= true' 또는 수동으로 열을 만드시겠습니까? – Sinatr

답변

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

+0

필드'numbers'는 배열입니다 .' numbers'의 각 요소에 열을 할당했거나 전체 배열'numbers'를 하나의 열에 넣으려고합니까? –

+0

'AutoGenerateColumns = false 그런 다음 각 열을 개별적으로 만들고 바인딩하십시오. [예제] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumn.datapropertyname.aspx) –

관련 문제