2013-07-15 48 views
3

我試圖以編程方式更新角網格NG網格上的gridOptions.sortInfo,但我無法讓它工作。如何更新ng-grid gridOptions.sortInfo?

我有「名稱」和「年齡」列。我最初在「名稱」列設置排序,但想要加載一些新的數據,然後更新它來排序「年齡」。 (以編程方式,不只是通過點擊列標題)。

我可以將$ scope.gridOptions.sortInfo設置爲一個新值,但網格不反映這一點。什麼是更新gridOptions.sortInfo的正確方法?

請參閱plunker:

http://plnkr.co/edit/JBYnrwLAIwFSKS6uSAND?p=preview

編輯:請注意,我希望能夠更新排序方向,即上升/下降,以及實際的列進行排序。

非常感謝

+0

我很想知道這個好吧...我已經看到這個問題出現在如何改變網格列幾次到目前爲止,並沒有看到答案......也許挖掘源頭是必要的。 – shaunhusain

回答

11

是,根據源代碼(行號128在這裏link),你應該能夠只是這樣做:

$scope.updateSortInfo = function() { 
    $scope.gridOptions.sortBy('name'); 
} 

的plunker表明,它的作品。我forked it here

這是另一個版本,其中帶有從文本框傳入的sortColumn:plunker

+2

太好了,謝謝。這是我需要設置列名稱,但不幸的是不處理排序方向(asc/desc)。如果代碼被更新以獲取sortInfo對象,那將是一件好事:例如{fields:['age'],方向:['desc']} – EdL

5

如果您在同一列上調用$scope.gridOptions.sortBy()兩次,則會按降序排序。

2

看看這個:​​

搜索這樣的文字:

排序 的排序信息的對象,屬性是:

我需要通過id列在開始進行排序在desc的順序,並做了我的伎倆:

var columnsDef = [ 
      {name:'id',width:50,sort: { 
       direction: 'desc', 
       priority: 0 
      }}, 
      {name:'title',width:350}, 
      {name:'address'}, 
      {name:'date',width:150}, 
      {name:'description',minWidth:450} 
     ]; 
$scope.theGrid.columnDefs = columnsDef;