任何人都可以告诉我如何在javascript中编写我们自己的函数以便在kendo网格中进行排序。我们是否需要为asc和desc编写两个函数?
任何帮助..非常感谢!
答案 0 :(得分:2)
你可以这样做而且你不必为升序和降序编写两个不同的函数,因为你唯一需要做的是为column
字段提供compare
函数你需要一个特殊的算法。
示例:
让我们假设我们想要按name
(string
)对网格进行排序,这是我们的数据:
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简单而整洁!