自定义排序功能kendo网格

时间:2014-05-20 17:57:15

标签: javascript kendo-ui kendo-grid

任何人都可以告诉我如何在javascript中编写我们自己的函数以便在kendo网格中进行排序。我们是否需要为asc和desc编写两个函数?

任何帮助..非常感谢!

1 个答案:

答案 0 :(得分:2)

你可以这样做而且你不必为升序和降序编写两个不同的函数,因为你唯一需要做的是为column字段提供compare函数你需要一个特殊的算法。

示例:

让我们假设我们想要按namestring)对网格进行排序,这是我们的数据:

data    : [
    { id : 1, name : "john" },
    { id : 2, name : "jane" },
    { id : 3, name : "Jane" },
    { id : 4, name : "jack" },
    { id : 5, name : "jane" },
    { id : 6, name : "janette" },
    { id : 7, name : "John" }
],

,列定义为:

columns   : [
    { field: "id", title: "id" },
    { field: "name", title: "Name"}
]

我们得到的是:

id   Name
4    jack
2    jane
5    jane
3    Jane
6    janette
1    john
7    John

正如我们所看到的那样,我们按字母顺序将它按大小写混合排序,但小写字母总是在大写之前。

如果我们想先将它排在大写和小写(ASCII顺序)之后,我们应该为columns.sortable.compare定义name为:

columns   : [
    { field: "id", title: "id" },
    { 
        field: "name", 
        title: "Name",
        sortable: {
            compare: function (a, b) {
                return a.name === b.name ? 0 : (a.name > b.name) ? 1 : -1;
            }
        }
    }
]

compare函数收到两个要比较的项目。

现在,我们得到的是:

id   Name
3    Jane
7    John
4    jack
2    jane
5    jane
6    janette
1    john

你可以尝试ASC和DESC here简单而整洁!