System.Windows.Forms.DataGridView не отображает данные - PullRequest
2 голосов
/ 18 мая 2010

Все, что я делаю, просто:

    // 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 для разработки.

1 Ответ

4 голосов
/ 18 мая 2010

Привязка данных не может использоваться с IEnumerable с; Вы можете связать только с IList или лучше.

Добавьте .ToArray(), чтобы превратить IEnumerable в IList<T>.

Причина, по которой он работает в первый раз, возможно, в том, что ваш GetAllOrderItems не выполняет никаких вызовов LINQ и в итоге возвращает объект, который реализует IList.

Однако, поскольку ваш метод GetOrderedItemsWhereBrandIs (предположительно) включает в себя вызов Where(), он возвращает объект, который реализует только IEnumerable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...