我有以下情形:
在我的网页我有一个网格(带分页)界到数据源。 当我按一下按钮“提取”网格被填充(通过Web服务分页读取数据)。 然后,我通过网分页选择“2页”。 同样,Web服务调用返回的数据。
现在我想点击“提取”再次,要在第一页上加载和显示数据。 我不知道这是最好的方式。
我想就只需一个电话到服务(与输入参数),并在重置了电网分页指数。
我现在用下面的代码:
$("#btnExtract").bind("click", function(e) {
var grid = $("#section-table").data("kendoGrid");
grid.dataSource.read( {parameter: "value"} );
grid.dataSource.page(1);
});
但它实际上使得两次调用服务。
如果你是做服务器端分页应该够做grid.dataSource.page(1)
因为这将调用read
完全按照你已经实现。
出于某种原因,如果页面被设置为1,并且再次设置为1,它会做一读。 如果是1以外的东西,把它设置为1,它就会转到该网页,而不是做一读。 因此,要回答你的问题,你可以使用此代码:
if (grid.dataSource.page() != 1) {
grid.dataSource.page(1);
}
grid.dataSource.read( {parameter: "value"} );
仅执行一个请求,你应该使用查询的数据源的方法。 它允许你创建的不同方法,如过滤器/页/排序等组合
例如:
dataSource.query({ page: 5, pageSize: 20, sort: { field: "orderId", dir: "asc" } });
使用DataSource.query()方法传递的页码和您的自定义输入参数:
$("#btnExtract").bind("click", function(e) {
var grid = $("#section-table").data("kendoGrid");
grid.dataSource.query( { page: 1, parameter: "value"} );
});
如果您使用服务器端分页,然后排序,你可能需要包括的信息,以及:
$("#btnExtract").bind("click", function(e) {
var grid = $("#section-table").data("kendoGrid");
var queryParams = {
page: 1,
pageSize: grid.dataSource.pageSize(),
sort: grid.dataSource.sort(),
group: grid.dataSource.group(),
filter: grid.dataSource.filter(),
parameter: "value"
};
grid.dataSource.query(queryParams);
});
定义一个parameterMap的为你的剑道电网数据源读取操作,这种进入该传输元件,如下图所示。 然后调用grid.dataSource.page(1),这将调用阅读,你应该进行排序。
new kendo.data.DataSource({
transport: {
read: {
// ur read
},
parameterMap: function (o, operation) {
var output = null;
switch (operation) {
case "create":
break;
case "read":
output = {parameter: "value"};
break;
case "update":
break;
case "destroy":
break;
}
return output; }}});