使用kendo网格排序机制实际排序

时间:2014-02-10 13:10:48

标签: kendo-ui kendo-grid

我想使用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
});

1 个答案:

答案 0 :(得分:1)

将dataSource设置为使用serverSorting,使用parameterMap函数以您希望将其发送到服务器的格式准备参数。因此,您有责任在服务器端处理排序。