我在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();
}
在控制器中我使用.ToDataSourceResult(request)
并且它完美地工作(网格具有分页)。当我必须更改数据源时出现问题。这是因为用户可以过滤,搜索...我通过Ajax调用相同的方法&#34; SearchSalesOrder&#34;有更多参数。使用Javascript,我从响应中获取json并以这种方式更改数据源:
var dataSource = new kendo.data.DataSource({
data: result.Data,
pageSize: 14
});
grid.setDataSource(dataSource);
grid.refresh();
之后,寻呼机只显示一个页面。我需要更改保持分页的数据源。
感谢。
答案 0 :(得分:0)
我想我明白了。
这很简单。我必须在total
中添加schema
属性。基本上在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();
有效。 :)