System.Windows.Forms.DataGridView不显示数据

时间:2010-05-18 13:18:30

标签: datagridview c#-4.0

我所做的一切都很简单:

    // 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 个答案:

答案 0 :(得分:4)

数据绑定不能与IEnumerable s一起使用;你只能绑定到IList或更好。

添加.ToArray()以将IEnumerable变为IList<T>

它第一次工作的原因可能是因为你的GetAllOrderItems没有执行任何LINQ调用,最终返回一个实现IList的对象。

但是,由于您的GetOrderedItemsWhereBrandIs方法(可能)包含Where()调用,因此它会返回仅实现IEnumerable的对象。