我有一个要求,即在后端处理大型数据集。一旦处理完第一批,我就要求将数据绑定到网格。一切都很好,直到第一次绑定,但总记录没有正确显示,我没有得到实际的分页按钮数(或者说,我无法导航到下一页)。
我读到寻呼机中的总数与Kendo UI网格的总属性相关联,因此为了更新其值,还应更新dataSource
的总和。
我手动更新了dataSource
。
$('#CenterList').data("kendoGrid").dataSource._total = 50;
但是没用。
@(Html.Kendo().Grid<Center>()
.Name("CenterList")
.Pageable(pager => pager
.Input(true)
.PageSizes(true)
.Refresh(true)
.ButtonCount(5)
.Numeric(true)
)
.Columns(columns =>
{
columns.Bound(x => x.centerCode).Title("center code").Width(30).ClientTemplate(
"<a style='cursor:pointer' onclick='EditCenter(" #:centerCode# " );'>#: centerCode#</a>");
columns.Bound(x => x.centerName).Title("CenterName").Width(100);
})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(15)
.Read(read => read.Action("CenterList", "Maintenance"))
.ServerOperation(true)
)
.Resizable(resize => resize.Columns(true))
)
这是控制器
public ActionResult CenterList([DataSourceRequest] DataSourceRequest request)
{
var groupList = iCenter.GetAllCenter(request.Page, Session["InstituteCode"].ToString());
DataSourceResult result = groupList.ToDataSourceResult(request, x => new
{
x.centerCode,
x.centerName,
});
return Json(result, JsonRequestBehavior.AllowGet);
}
我可以获得第一页的记录。这是15行,然后我不能进入下一页。
我得到了记录的总数,并手动分配了剑道网格dataSource
。
$(document).ready(function () {
var total;
$.ajax({
url: '@Url.Action("GetCenterCount","Maintenance")',
dataType: 'json',
async: false,
success: function (data) {
total = data;
}
});
$('#CenterList').data("kendoGrid").dataSource._total = total;
alert("Total in ds = " + $('#CenterList').data("kendoGrid").dataSource._total);
});
在警报显示之前,总数是好的。但之后,Kendo Grid不显示总rowCount
或下一页。