2010-05-18 2 views
2

를 표시하지 않습니다System.Windows.Forms.DataGridView 내가 뭐하는 거지 모두가 간단 데이터

// Both the methods, order.GetAllOrderItems() and order.GetOrderedItemsWhereBrandIs("foo") 
    // return an IEnumerable<T> so the assignment to the DataSource property of the DataGridView 
    // should be fine. The problem is in re-assigning the data source property. 
    public void DisplayItems() 
    { 
     // The data appears if I have just this line. 
     dgvOrderedItems.DataSource = order.GetAllOrderItems(); 

     dgvOrderedItems.DataSource = null; 

     // This time the data grid does not take the new data source. Instead, because 
     // of the null assignment in the previous statement, it displays no data at all. 
     dgvOrderedItems.DataSource = order.GetOrderedItemsWhereBrandIs("Lenovo"); 
    } 

내 질문은 : 그것은되면 DataGridView 컨트롤의 데이터 소스를 변경하는 방법은 무엇입니까 세트? 개발을 위해 C# 4.0과 Visual Studio 2010을 사용하고 있습니다.

답변

4

데이터 바인딩은 IEnumerable과 함께 사용할 수 없습니다. IList 또는 그 이상에만 바인드 할 수 있습니다.

IEnumerableIList<T>으로 바꾸려면 .ToArray()을 추가하십시오.

처음으로 작동하는 이유는 GetAllOrderItems이 LINQ 호출을 수행하지 않고 IList을 구현하는 개체를 반환하기 때문일 수 있습니다.

그러나 GetOrderedItemsWhereBrandIs 메서드는 (아마도) Where() 호출을 포함하므로 IEnumerable 만 구현하는 개체를 반환합니다.

+0

실례로, 당신은 영웅입니다! 너는 그 사람이야! –

관련 문제