2014-05-20 70 views
0

任何人都可以请让我知道我们如何在JavaScript中编写我们自己的函数在剑道网格中进行排序。我们是否需要为asc和desc写两个函数?自定义排序功能剑道网格

任何帮助..非常感谢!

回答

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顺序),我们应该为name定义columns.sortable.compare为:

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简洁利落!

+0

感谢您的回复!但是我正在做的是,当获取数据到剑道网格时,我从我的页面上加载数据库的特定页面的特定页面大小(从名称限制100,200选择FName,LName),以及页面上的时间3(示例)能够仅对第3页数据进行排序,但不能基于整个数据进行排序。 – ak17

+1

根据你所说的,你应该使用[ServerSorting](http://docs.telerik.com/kendo-ui/api/framework/datasource#configuration-serverSorting)。你试过了吗? – OnaBai