DataGridView无法通过LINQ to SQL对象填充

时间:2011-12-01 18:25:26

标签: c# sql linq datagridview

我正在尝试使用下面的代码在我的DataGridView应用程序(WinForms)上填充dgvOrderSizes。正如在代码中所评论的那样,如果我将cod分配给我的DataGridView,那么它就可以正常填充,但是当我尝试将orderDetails分配给它时,它就不会被填充。我尝试调试代码并发现DataSource属性已正确分配,所以我想知道为什么网格不会被填充? (没有提出异常)

    protected void ShowOrderDetails(int orderNo)
    {

        this.dgvOrderSizes.DataSource = null;

        var cod = from orderDetail in db.OrderDetails
                                 where orderDetail.OrderNo == orderNo
                                 select orderDetail;

        //this.dgvOrderSizes.DataSource = cod;        //works until here


        var orderDetails = from pOrder in cod.AsEnumerable()
                                 select new { pOrder.Plies, pOrder.Composition, pOrder.Size, pOrder.UnitName, pOrder.Quantity, pOrder.Rate, pOrder.ProductionUnitName, pOrder.DeliveryUnitName };

        this.dgvOrderSizes.DataSource = orderDetails;       //doesn't work
    }

1 个答案:

答案 0 :(得分:1)

DataGridView使用了相当惊人数量的API,包括IListSource,IList,ITypedList,IBindingList,IBindingListView和大多数CompnentModel(包括所有描述符),还有更多。如果你说它与“cod”一起使用,那么LINQ-to-SQL可能至少提供了其中一个API,而LINQ-to-Objects则不然(这很好;它不是必需的)。

只需调用ToList(),一切都可以正常工作:

blah.DataSource = orderDetails.ToList();