0
我有一个页面加载有点慢,因此我想加载页面完成加载后的GridView中的数据。Databind Grid LINQ异步ASP.NET C#
我想,继续使用我的LinqDataSource1_Selecting - 因为当我绑定的GridView与Grid1.DataSource我得到这个错误:
不能为未实现ICollection的数据源计算计数。
现在我已经尝试过使用BackgroundWorker,Asynchronous Pages和一个计时器。但我无法真正让他们像我想要的那样工作。
这是我如何结合我的数据:
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
GWportalDataContext db = new GWportalDataContext();
DeliveryTimeRepository dltRep = new DeliveryTimeRepository();
var query = from o in db.Orders
join y in db.OrderLines on o.OrderID equals y.OrderID
join x in db.Products on y.ItemNumber equals x.ItemNumber
where o.AccountNumber == AppSession.CurrentLoginTicket.AccountNumber
select new
{
o.OrderID,
o.AxaptaSalesId,
y.ItemNumber,
Name = x.Name + o.OrderID,
x.ProductFormatName,
y.Quantity,
y.Price,
Status = dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).Substring(0, dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).LastIndexOf("|")),
Levering = dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).Substring(dltRep.getOrderStatus(o.OrderID, o.AxaptaSalesId, y.ItemNumber).LastIndexOf("|")).Replace("|", "")
};
var query2 = from o in db.AxSales
join y in db.AxSaleLines on o.SalesId equals y.SalesId
join x in db.Products on y.ItemNumber equals x.ItemNumber
where o.AccountNumber == AppSession.CurrentLoginTicket.AccountNumber
select new
{
OrderID = o.SalesId,
AxaptaSalesId = o.SalesId,
y.ItemNumber,
Name = x.Name + o.SalesId,
x.ProductFormatName,
y.Quantity,
Price = y.SalesPrice,
Status = dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).Substring(0, dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).LastIndexOf("|")),
Levering = dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).Substring(dltRep.getAxOrderStatus(o.SalesId, y.ItemNumber).LastIndexOf("|")).Replace("|", "")
};
//Query 1 start
var dataToList = query.ToList();
List<object> deletedItems = dataToList.Where(item => orderDeleted(item.OrderID, item.AxaptaSalesId)).Cast<object>().ToList();
var datatoGrid = dataToList.Except(deletedItems);
// Query 1 end
//Query 2 start
var dataToList2 = query2.ToList();
List<object> deletedItems2 = dataToList2.Where(item => axOrderDeleted(item.AxaptaSalesId)).Cast<object>().ToList();
var dataToGrid2 = dataToList2.Except(deletedItems2);
//Query 2 end
var combined = datatoGrid.Union(dataToGrid2);
e.Result = combined;
}
使用转换时,出现以下错误消息: 无法转换类型为' d__88'1 [System.Object]'的对象以键入'System.Collections.Generic.List'1 [System.Object] ”。 –
KLIM8D
2011-12-21 17:00:22
C#:var combined = datatoGrid.Union(dataToGrid2); Grid1.DataSource =(列表
@ KLIM8D查看我的编辑 – msarchet 2011-12-21 17:02:55