2014-02-10 70 views
1

我想使用kendo網格排序機制,捕獲排序事件並在服務器端執行我自己的排序。我不''希望網格實際上執行排序(不在客戶端,也不在服務器端)。在實際排序中使用kendo網格排序機制

我發現我可以定義數據源上我自己的排序功能,捕捉事件排序如下:

gridDatasource.originalSort = gridDatasource.sort; 
gridDatasource.sort = function() { 
    if (arguments.length > 0) { 
     console.log("SORT: " + JSON.stringify(arguments)); 
    } 
    //return gridDatasource.originalSort.apply(this, arguments); 
} 

這樣,我能捕捉任何類型的操作它發生,但在問題出現之前如果我不調用原始排序,網格的三角形不會出現,排序方向也不會改變。所以任何時候我點擊排序我都會得到相同的方向「asc」。

其他建議?

編輯

下面

或多或少電網定義的例子:

var ds = new kendo.data.DataSource({}); 
ds.originalSort = ds.sort; 
ds.sort = function() { 
    if (arguments.length > 0) { 
      console.log("SORT: " + JSON.stringify(arguments)); 
    } 
    return ds.originalSort.apply(this, arguments); 
} 
$("#grid", element).kendoGrid({ 
    dataSource: ds, 
    sortable: true, 
    pageable: true, 
    scrollable: { 
      virtual: true 
    }, 
    filterable: true, 
    columns: [ 
       { field: "text", title: "text", hidden: false}, 
       { field: "id", title: "id", hidden: false}, 
       { field: "newColumn", title: "New column", hidden: false}, 
       { field: "anotherColumn", title: "Another column", hidden: false} 
    ], 

    selectable: "row", 
    resizable: true, 
    columnMenu: true 
}); 
+0

我可以看到網格定義嗎? –

+0

其餘的定義與排序無關,所以我認爲它不相關 –

+0

我知道它是相關的。 –

回答

1

設置DataSource使用serverSorting,使用parameterMap功能,在你想要的格式編制的參數將它們發送到服務器。因此你負責處理服務器端的排序。

+0

這並不能幫助我,因爲我不希望網格對請求負責。這個想法是引發一個事件(類似「sortStarted」),應用程序中的其他組件將處理請求本身。 –