我想使用kendo网格排序机制,捕获排序事件并在服务器端执行我自己的排序。我不希望网格实际上执行排序(不是在客户端,也不是在服务器端)。
我发现我可以在数据源上定义自己的排序函数,并按如下方式捕获排序事件:
gridDatasource.originalSort = gridDatasource.sort;
gridDatasource.sort = function () {
if (arguments.length > 0) {
console.log("SORT: " + JSON.stringify(arguments));
}
//return gridDatasource.originalSort.apply(this, arguments);
}
这样我就可以在它发生之前捕获任何排序操作,但问题是如果我不调用原始排序,则不会出现网格的三角形,并且排序的方向不会改变。因此,每当我点击排序时,我都会得到相同的方向“asc”。
还有其他建议吗?
修改
下面的或多或少是网格定义的一个例子:
var ds = new kendo.data.DataSource({});
ds.originalSort = ds.sort;
ds.sort = function () {
if (arguments.length > 0) {
console.log("SORT: " + JSON.stringify(arguments));
}
return ds.originalSort.apply(this, arguments);
}
$("#grid", element).kendoGrid({
dataSource: ds,
sortable: true,
pageable: true,
scrollable: {
virtual: true
},
filterable: true,
columns: [
{ field: "text", title: "text", hidden: false},
{ field: "id", title: "id", hidden: false},
{ field: "newColumn", title: "New column", hidden: false},
{ field: "anotherColumn", title: "Another column", hidden: false}
],
selectable: "row",
resizable: true,
columnMenu: true
});
答案 0 :(得分:1)
将dataSource设置为使用serverSorting,使用parameterMap函数以您希望将其发送到服务器的格式准备参数。因此,您有责任在服务器端处理排序。