Я пытаюсь снимать разбивку на страницы из пары сетки Telerik MVC, в которые загружено большое количество данных (более 5000, возможно, больше, когда они попадают в производство). С помощью наших небольших сеток я бы просто снял свойство Pageable (см. Код ниже), и функция прокрутки просто работает.Динамическая прокрутка Telerik MVC Grid
С большими сетками я получаю ошибку JSON, говорящую, что длина строки превышает значение, заданное для свойства maxJsonLength. Я обновил webconfig, чтобы установить максимальное значение в соответствии с этим предложением links, но оно все равно дало мне ту же ошибку.
Версия Telerik, которую я использую, является простой Telerik (не Kendo) и является версией MVC (основной UI DLL является Telerik.Web.MVC, версия 2012.2.801.340).
Вся документация, которую я нашел, указывает на новую версию Kendo или RadGrid, которая не включена/поддерживается в моей версии.
Есть ли способ добиться этого, либо загрузив все это сразу, как это делает here, или создание динамически загружаемой сетки с использованием версии Telerik, которой я пользуюсь, или мне не повезло? Я также открыт для предложений по другому пути для достижения этого, но результаты должны быть в какой-то Grid.
Ниже приведен базовый код для того, что у меня есть для всех сетей. Большие сетки, с которыми у меня возникают проблемы, имеют больше столбцов, чем этот, которые помогают учитывать ошибку JSON.
@(Html.Telerik().Grid<ApportionmentCode>()
.DataBinding(dataBinding => dataBinding.Ajax().Select("AjaxGetAppCodes", "AppCode"))
.Name("Grid")
.Columns(columns =>
{
columns.Bound(o => o.Id)
.Title("ID")
.Width(50)
.HtmlAttributes(new { @class = "text-center" })
.Hidden();
columns.Bound(o => o.Code)
.Title("AppCode")
.Width(90)
.HtmlAttributes(new { @class = "text-center" });
columns.Bound(o => o.Description)
.Title("Description")
.HtmlAttributes(new { style = "min-width: 200px;" })
.ClientTemplate("<span class=\"clip tooltip\"><#= Description #></span>");
columns.Command(commands =>
{
commands.Custom("edit")
.Text("Edit")
.ButtonType(GridButtonType.Image)
.Action("Edit", "AppCode")
.ImageHtmlAttributes(new { @class = "t-edit", title = "Edit" })
.DataRouteValues(route => route.Add(o => o.Id));
})
.Width(78)
.HtmlAttributes(new { @class = "nowrap" })
.IncludeInContextMenu(false);
})
.ToolBar(commands => commands.Custom()
.Text("Add")
.Action("Create", "AppCode", Request.GetRouteValues())
.ButtonType(GridButtonType.ImageAndText)
.ImageHtmlAttributes(new { @class = "t-add" })
.HtmlAttributes(new { @class = "addButton" }))
.Filterable()
.ClientEvents(events =>
{
events.OnDataBound("onDataBound");
events.OnComplete("AddGridFilter");
events.OnLoad("OnGridLoad");
})
.ColumnContextMenu()
.Sortable()
.Pageable(paging => paging.PageSize(20).Style(GridPagerStyles.NextPreviousAndNumeric).Position(GridPagerPosition.Bottom)) //When removed, this is the line that causes the JSON error
.Resizable(resizing => resizing.Columns(true))
.Scrollable(a => a.Height("auto")))
Заранее спасибо
5000 много. Я замедлю сетку. – Win
Но как бы вы замедляете сетку? есть ли свойство Telerik или какой-нибудь JQuery, который может это сделать или заставить шахматную нагрузку? –
Добавление виртуализации прокрутки пошатнулось бы, пример здесь: http://demos.telerik.com/aspnet-mvc/grid/virtualization-remote-data – drew