为什么我的剑道网格 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()
)

为什么我的剑道网格 ASP.NET MVC 在网络上处理大量数据时会失败

我从不需要调整任何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()