2013-10-30 49 views
5

是否可以使用內置功能「禁用」或鎖定ng-grid的選擇?我希望用戶能夠選擇一行,單擊一個按鈕,然後網格將保持鎖定狀態,直到用戶按下另一個按鈕。如何禁用ng-grid中的選擇

回答

11

是的,您可以從beforeSelectionChange返回false禁用更改網格上的選定行。

$scope.option = { 
    enableRowSelection: true, 
}; 
$scope.gridOptions = { 
    data: 'myData', 
    beforeSelectionChange: function() { 
     return $scope.option.enableRowSelection; 
    } 
    //, ... 
}; 

HTML:

<button ng-click="option.enableRowSelection=false">Freeze Selection</button> 
<button ng-click="option.enableRowSelection=true">Unfreeze Selection</button> 
<div class="gridStyle" ng-grid="gridOptions"></div> 

示例代碼:http://plnkr.co/edit/PbhPzv?p=preview

參見:https://github.com/angular-ui/ng-grid/wiki/Configuration-Options

+0

這是行得通的,但現在我意識到我需要將一些輸入框移出網格,因此它們沒有鎖定,所以它們沒有鎖定,問題是我不認爲它們有權訪問網格外的範圍,是有可能將範圍傳遞出去?用戶可以在按下編輯按鈕後編輯當前選定的行。 – Tim

+1

是的,可以找到網格範圍並將其傳遞給另一個函數,然後調用'$ gridScope.apply',但可能更容易直接編輯gridOptions.data。對數據的更改(上面示例中的「myData」)通常會自動顯示在網格中。 – user508994

0

這個作品在角2.3:

constructor() { 
    this.gridOptions = <GridOptions>{}; 
    this.gridOptions.suppressCellSelection = true; 
    }