我正在尝试使用下面的代码在我的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
}
答案 0 :(得分:1)
DataGridView使用了相当惊人数量的API,包括IListSource,IList,ITypedList,IBindingList,IBindingListView和大多数CompnentModel(包括所有描述符),还有更多。如果你说它与“cod”一起使用,那么LINQ-to-SQL可能至少提供了其中一个API,而LINQ-to-Objects则不然(这很好;它不是必需的)。
只需调用ToList(),一切都可以正常工作:
blah.DataSource = orderDetails.ToList();