如果您dataSource
在选项serverAggregates
中定义serverFiltering
、serverGrouping
、serverPaging
和 / 或serverSorting
,KendoUI 会将这些参数发送到服务器,以让它完成需要做的事情以及所需的不同参数。
在这些情况下,您可以定义transport.parameterMap
或transport.read.data
允许您将参数从 KendoUI 内部格式转换或添加到您的服务器格式,因此您可以在此处拦截请求并保存最后一个请求的参数列表以供以后使用。
选项1:
var savedParamAsJSON = undefined;
var savedParamAsStringifiedJSON = undefined;
var savedParamAsUriEncoded = undefined;
var savedParamAsUriDecoded = undefined;
var dataSource = new kendo.data.DataSource({
serverPaging : true,
serverSorting : true,
serverFiltering: true,
transport : {
read : {
url : "data.json"
},
parameterMap: function (data, type) {
if (type === "read") {
savedParamAsJSON = data;
savedParamAsStringifiedJSON = JSON.stringify(data);
savedParamAsUriEncoded = encodeURIComponent(jQuery.param(data));
savedParamAsUriDecoded = jQuery.param(data);
// Actual update the link
$("#exportLink").attr("href", "http://www.onabai.com?" + savedParamAsUriDecoded);
}
}
},
schema : {
model: {
id : "ID",
fields: {
ID: { type: "number"}
}
}
},
pageSize : 8
});
在parameterMap
我以四种不同的格式保存它:
savedParamAsJSON
并存储为savedParamAsStringifiedJSON
JSON 对象或其字符串化表示(例如:) {"take":8,"skip":0,"page":1,"pageSize":8}
。
- In
savedParamAsUriEncoded
存储为字符串,但作为 URI 编码(例如take%3D8%26skip%3D0%26page%3D1%26pageSize%3D8
:)
- In
savedParamAsUriDecoded
存储为字符串,但不是 URI 编码的(例如:)take=8&skip=0&page=1&pageSize=8
。
选项2:您也可以在transport.read.data
定义保存数据的函数时这样做:
transport : {
read : {
url : "data.json",
data: function (data) {
savedParamAsJSON = data;
savedParamAsStringifiedJSON = JSON.stringify(data);
savedParamAsUriEncoded = encodeURIComponent(jQuery.param(data));
savedParamAsUriDecoded = jQuery.param(data);
// Actual update the link
$("#exportLink").attr("href", "http://www.onabai.com?" + savedParamAsUriDecoded);
}
}
},