限制ng-grid中所选项目的数量



是否有办法限制ng-grid中选定项目的数量?

我没有找到设置来做到这一点,所以我试图在gridOptions.selectedItems中使用watchCollection来阻止它。

selectItemslength大于5时,我尝试取消选择最后一个选择,但不像预期的那样工作,因为项目行索引似乎与呈现的不同:

这是监视程序代码:

 $scope.$watchCollection('gridOptions.selectedItems', function (newVal, oldVal) {
   if ($scope.gridOptions.selectedItems.length > 5) {
     for (var i = 0; i < $scope.importableFilesData.length; i++) {
       if ($scope.importableFilesData[i] === newVal[0]) {
         $scope.gridOptions.selectRow(i, false);
       }
    }
 }

用这种方法检查您的状况。你不需要搜索最后选择的行你可以直接取消选择。我已经测试过了,它是这样工作的。

$scope.yourGridApi.selection.on.rowSelectionChanged($scope,function(row){
        if($scope.yourGrid.gridOptions.selectedItems.length>=5){
           row.isSelected = false;
        }
      });

我找到了一个使用beforeSelectionChange属性的解决方案。此属性允许您设置每次选中一行时触发的回调。如果返回false,选择将被取消。

$scope.gridOptions = {
  // your grid options ... 
  beforeSelectionChange: function (row) {
    if ($scope.gridOptions.selectedItems.length > 5) {
      return false;
    }
    return true;
  }
}

最新更新