2014-05-20 92 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