【发布时间】:2014-05-20 17:57:15
【问题描述】:
任何人都可以告诉我如何在 javascript 中编写我们自己的函数以在剑道网格中进行排序。而我们是否需要为asc和desc写两个函数?
任何帮助.. 非常感谢!
【问题讨论】:
标签: javascript kendo-ui kendo-grid
任何人都可以告诉我如何在 javascript 中编写我们自己的函数以在剑道网格中进行排序。而我们是否需要为asc和desc写两个函数?
任何帮助.. 非常感谢!
【问题讨论】:
标签: javascript kendo-ui kendo-grid
您可以做到,而且您不必为升序和降序编写两个不同的函数,因为您唯一需要做的就是为需要特殊算法的 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 简单又整洁!
【讨论】: