gpt4 book ai didi

asp.net-mvc - 填充 Telerik 网格时出现最大 json 长度错误

转载 作者:行者123 更新时间:2023-12-01 02:56:53 27 4
gpt4 key购买 nike

我正在尝试根据所选日期从表格中填充 Telerik 网格。

我收到一条错误消息:

System.InvalidOperationException: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property

还有其他方法可以在客户端事件上填充 Telerik 网格吗?

查看:

        <%= Html.Telerik().DatePicker().Min("01/01/2011")
.Name("Date")
.ClientEvents(e => e.OnChange("Date_onChange"))
%>

<div>
<%= Html.Telerik().Grid<DataAccess.Entity.Dto.ReportData>()
.Name("tblGrid")
.DataBinding(databinding => databinding.Ajax()
.Select("MasterDataGrid", "Report"))
.Columns(col =>
{
col.Bound(f => f.ID).Title("ID Number");
col.Bound(f => f.Date).Title("Date");
})
.Filterable(filter => filter.Enabled(true))
.Pageable(page => page.PageSize(200))
.Sortable(sort => sort.Enabled(true))
%>
</div>

JavaScript:

function Date_onChange() {

var link = '/Report/DataGrid';
var Date = $("#Date").val().toString();
$.ajax({
type: 'POST',
url: link,
data: { date: Date },
dataType: 'json',
success: function (result) {
$("#tblGrid").data("tGrid").dataBind(result.data);
},
error: function (result) {
$("#ErrorMessage").text(result.message);
}
});

};

Controller :

    [HttpPost]
[GridAction]
public ActionResult DataGrid(DateTime date)
{
var model = context.GetReportData_tblData(date);
return View(new GridModel { Data = model });
}

最佳答案

看来您返回的数据过多。这里有两种可能的情况,可能是其中之一,也可能是两者兼而有之。

(1) 由于您的页面大小为 200,这意味着您需要大量数据,因此您可能会返回太多对象。默认情况下,Telerik Grid 将获取整个集合并在客户端进行排序和过滤。我会尝试实现服务器端分页和排序,以便一次只返回一页数据。

查看:

@(Html.Telerik.Grid<IEnumerable<MyClass>>()
.Name("MyGrid")
.Columns(col => // column definitions)
.EnableCustomBinding(true)
.Pageable(pg =>
{
paging.Total(Model.TotalCount);
paging.PageSize(Model.PAGE_SIZE);
})
.DataBinding(db =>
{
db.Ajax().Select("DataGrid", "MyController");
}
)

Controller :

[GridAction(EnableCustomBinding = true)]
public ActionResult DataGrid(GridCommand command, DateTime date)
{
MyModel model = new MyModel();
IEnumerable<MyClass> data = context.GetReportData_tblData(date);

// apply paging, filtering, grouping, and sorting
GridModel gm = data.AsQueryable().ToGridModel(command.Page, command.PageSize, command.SortDescriptors, command.FilterDescriptors, command.GroupDescriptors);

return View(gm);
}

Telerik 提供了一个方便的扩展方法来应用所有分页、排序、过滤和分组:IQueryable<T>.ToGridModel() ,您可以在 Telerik.Web.Mvc.Extensions 中找到装配(h/t:vladimir77)。

(2) 如果您的DataAccess.Entity.Dto.ReportData类有很多属性,和/或它的某些属性具有长字符串或子对象,这些对象也被递归序列化,那么您只需几个对象就可以轻松达到传输限制。我注意到您只使用网格中的两个属性。请考虑创建仅包含您需要的数据的 View 模型对象(无论如何,这是一个很好的做法)。

关于asp.net-mvc - 填充 Telerik 网格时出现最大 json 长度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19166035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com