将数据绑定到KendoGrid

时间:2017-04-12 04:34:58

标签: asp.net-mvc kendo-ui kendo-grid razorengine

我已经在这个问题上工作了很长一段时间。 基本上,我正在使用Kendo Grid将数据从Controller显示到ViewPage。

但是,当我运行视图时,我继续收到此错误 maxJsonLengthError

我如何纠正这个问题?提前感谢所有帮助。 请参阅我的编辑

这是我的ControllerCode: -

public ActionResult Index()
{
    ViewData["DealsList"] = objDealerModel.listDeals;
    return View();
}

这是我的ViewPage代码: -

@(Html.Kendo().Grid((IEnumerable<WCB.Models.DealerQueue>)ViewData["DealsList"])
        .Name("Grid")
        .Columns(columns =>
        {
            columns.Bound(p => p.DealId).Visible(false);
            columns.Bound(p => p.DealRefNo).Title("Deal No");
            columns.Bound(p => p.CustomerName).Title("Customer Name");
            columns.Bound(p => p.DealType).Title("Deal Type");
            columns.Bound(p => p.Location).Visible(false);
            columns.Bound(p => p.CreatedDate).Title("Created Date");
            columns.Bound(p => p.Currency).Title("Currency");
            columns.Bound(p => p.Amount).Title("FCY Amount");
            columns.Bound(p => p.DealValue).Title("Deal Amount").ClientTemplate("#= kendo.toString(DealValue, 'n') #");
            columns.Bound(p => p.Status);
            columns.Command(command => command.Custom("ViewDetails").Click("ViewDealDetails")).Title("View");
        })
                .Pageable(pageable => pageable
                .Refresh(true)
                .PageSizes(true)
                .ButtonCount(20))
        .Sortable()
        .Scrollable(scr => scr.Height("auto"))
        .Filterable()
        .DataSource(dataSource => dataSource
        .Ajax()
        .ServerOperation(false)
    )

编辑: 我试过在myController中使用这段代码: -

var jsonResult = Json(objDealerModel.listDeals, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;

任何人都可以根据这个建议在我的viewPage中为KENDO GRID做什么改变?对剑道不太熟悉

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我通过在appSettings中为aspnet:MaxJsonDeserializerMembers设置更高的值来解决此问题:

<appSettings>
  <add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>

如果这些选项不起作用,您可以尝试使用此thread中指定的JSON.NET创建自定义json值提供程序工厂。

修改 或者如果这与Kendo Grid绑定有关,那么你可以试试这个。

public class MySerializer : Kendo.Mvc.Infrastructure.JavaScriptInitializer
{
    public override IJavaScriptSerializer CreateSerializer()
    {
        var serializer = base.CreateSerializer() as DefaultJavaScriptSerializer;
        serializer.MaxJsonLength = serializer.MaxJsonLength * 100;
        return serializer;
    }
}

Kendo.Mvc.Infrastructure.DI.Current.Register<Kendo.Mvc.Infrastructure.IJavaScriptInitializer>( () => newMySerializer() );