为什么我的剑道网格 ASP.NET MVC 在网络上处理大量数据时会失败
本文关键字:处理 数据 失败 网络 我的 网格 ASP MVC NET 为什么 | 更新日期: 2023-09-27 18:31:51
我有一个剑道网格,带有 ASP.NET MVC的包装器。当数据库在我的笔记本电脑中时,它甚至返回 30,000 行。但是,当数据库位于远程系统中时,它仅适用于 15,000 行。除此之外,Fiddler Get
响应显示一个空的 JSON 集。网络上的JSON数据是否存在瓶颈?
这是我的控制器类中的代码:
public JsonResult Get([DataSourceRequest]DataSourceRequest request)
{
myStartDate = (DateTime)Session["myStartDate"];
myEndDate = (DateTime)Session["myEndDate"];
// SP query to select products and map to model objects
var products = ConvertOutputOfAdminAssociateSPToAList(myStartDate,myEndDate);
Session["ProductionList"] = products;
// convert to a DataSourceResponse and send back as JSON
return this.Json(products.ToDataSourceResult(request));
}
这是视图
@(Html.Kendo().Grid<Production>().Name("Production").Columns(c => {
c.Bound(p => p.DateProcessed).Title("Processed").Format("{0:MM-dd-yyyy}").ClientFooterTemplate("Total Count: #=count#")
.ClientGroupFooterTemplate("Count: #=count#");
c.Bound(p => p.ReceiptDate).Title("Received").Format("{0:MM-dd-yyyy}");
c.Bound(p => p.ClaimNo);
c.Bound(p => p.Associate);
c.Bound(p => p.ProcessLevel).Title("Level");
c.Bound(p => p.NoOfLines).Title("Lines").ClientFooterTemplate("Sum: #=sum#")
.ClientGroupFooterTemplate("Sum: #=sum#").ClientFooterTemplate("Average: #= kendo.toString(average,'0.00') #")
.ClientGroupFooterTemplate("Average: #= kendo.toString(average,'0.00') #");
c.Bound(p => p.Auditor);
c.Bound(p => p.Manufacturer);
c.Bound(p => p.ClaimantName).Title("Claimant");
c.Bound(p => p.ClaimStatus).Title("Status");
c.Bound(p => p.FTR);
c.Bound(p => p.Remarks);
c.Bound(p => p.RequestedAmount).Title("Amount").Format("{0:n2}") .ClientFooterTemplate("Sum: #=sum#")
.ClientGroupFooterTemplate("Sum: #=sum#");
c.Bound(p => p.Error);
})
.DataSource(d => d
.Ajax()
.Read(r => r.Action("Get", "Production"))
.PageSize(8)
.Aggregates(aggregates =>
{
aggregates.Add(p => p.DateProcessed).Count();
aggregates.Add(p => p.NoOfLines).Sum();
aggregates.Add(p => p.NoOfLines).Average();
aggregates.Add(p => p.RequestedAmount).Sum();
})
)
.ToolBar(toolBar =>
toolBar.Custom()
.Text("Export To CSV")
.HtmlAttributes(new { id = "export" })
.Url(Url.Action("Export", "Production", new { page = 1, pageSize = "~", filter = "~", sort = "~" }))
)
.Events(ev => ev.DataBound("onDataBound"))
.Pageable()
.Groupable()
.Sortable()
.Filterable()
)
我从不需要调整任何json序列化配置设置。
到您的
@(Html.Kendo().Grid<Production>()
加。。。
.Scrollable(scrollable => scrollable.Virtual(true))
您可以将其与分页等一起使用...因此
@(Html.Kendo().Grid<Production>()
.Name("Production")
.Scrollable(scrollable => scrollable.Virtual(true))
.Columns(c => {
c.Bound(p => p.DateProcessed).Title("Processed").Format("{0:MM-dd-yyyy}").ClientFooterTemplate("Total Count: #=count#")
.ClientGroupFooterTemplate("Count: #=count#");
c.Bound(p => p.ReceiptDate).Title("Received").Format("{0:MM-dd-yyyy}");
c.Bound(p => p.ClaimNo);
c.Bound(p => p.Associate);
c.Bound(p => p.ProcessLevel).Title("Level");
c.Bound(p => p.NoOfLines).Title("Lines").ClientFooterTemplate("Sum: #=sum#")
.ClientGroupFooterTemplate("Sum: #=sum#").ClientFooterTemplate("Average: #= kendo.toString(average,'0.00') #")
.ClientGroupFooterTemplate("Average: #= kendo.toString(average,'0.00') #");
c.Bound(p => p.Auditor);
c.Bound(p => p.Manufacturer);
c.Bound(p => p.ClaimantName).Title("Claimant");
c.Bound(p => p.ClaimStatus).Title("Status");
c.Bound(p => p.FTR);
c.Bound(p => p.Remarks);
c.Bound(p => p.RequestedAmount).Title("Amount").Format("{0:n2}") .ClientFooterTemplate("Sum: #=sum#")
.ClientGroupFooterTemplate("Sum: #=sum#");
c.Bound(p => p.Error);
})
.DataSource(d => d
.Ajax()
.Read(r => r.Action("Get", "Production"))
.PageSize(8)
.Aggregates(aggregates =>
{
aggregates.Add(p => p.DateProcessed).Count();
aggregates.Add(p => p.NoOfLines).Sum();
aggregates.Add(p => p.NoOfLines).Average();
aggregates.Add(p => p.RequestedAmount).Sum();
})
)
.ToolBar(toolBar =>
toolBar.Custom()
.Text("Export To CSV")
.HtmlAttributes(new { id = "export" })
.Url(Url.Action("Export", "Production", new { page = 1, pageSize = "~", filter = "~", sort = "~" }))
)
.Events(ev => ev.DataBound("onDataBound"))
.Pageable()
.Groupable()
.Sortable()
.Filterable()
)