我在 cshtml 文件中有这个定义:
@{Html.Kendo().Grid<OrderItem>()
.Name("OrderList")
.Columns(columns => {
.........
})
.DataSource(binding => binding
.Ajax()
.PageSize(14)
.Model(model => model.Id(p => p.No))
.Read(read => read.Action("SearchSalesOrder", "SalesOrder"))
)
.Sortable()
.Pageable()
.Filterable()
.Scrollable()
.Render();
}
在 Controller 中我使用.ToDataSourceResult(request)
并且它工作得很好(网格有分页)。当我必须更改数据源时就会出现问题。发生这种情况是因为用户可以过滤、搜索...我通过 Ajax 调用具有更多参数的相同方法“SearchSalesOrder”。使用 Javascript,我从响应中获取 json,并以这种方式更改数据源:
var dataSource = new kendo.data.DataSource({
data: result.Data,
pageSize: 14
});
grid.setDataSource(dataSource);
grid.refresh();
此后,寻呼机仅显示一页。我需要更改数据源以保持分页。
谢谢。
最佳答案
我想我明白了。
很简单。我必须在 schema
中添加 total
属性。基本上在 Javascript 中,当我需要更改数据源时,我有以下代码:
var grid = $("#OrderList").data("kendoGrid");
var dataSource = new kendo.data.DataSource({
transport: {
read: {
url: '/Sales/SearchSalesOrder',
type: 'POST',
data: {
page: 1, pageSize: 14, startDate: startDateParam, endDate: endDateParam,.....
}
}
},
pageSize: 14,
serverPaging: true,
schema: {
parse: function (response) {
// Charts refresh
.......
return response.Data;
},
total: function (response) {
return response.Total;
},
data: "Data"
}
});
grid.setDataSource(dataSource);
grid.refresh();
它有效。 :)
关于javascript - 剑道 UI 网格 : I lose pagination after datasource refresh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37073786/