2014-11-04 3 views
0

내 ngGrid에 큰 확인란이 있지만 특정 조건이있을 때 특정 행을 선택하지 않는 상황이 있습니다. 그래서 선택을 클릭하면 모든 것이 선택되지 않으면 검사가 실패한 것만 선택해야합니다. 이것은 내가 생각했던 것입니다 :ngGrid : 특정 조건이있는 경우 행을 선택하지 마십시오.

$scope.gridOptions.beforeSelectionChange = function (rowItem, event) { 
      angular.forEach(rowItem, function(item) { 
       if (item.entity.status == 'Accepted') { 
        item.selected = false; 
       } else { 
        item.selected = true; 
       } 
      }); 
     } 

그러나 이것은 효과가없는 것 같습니다. 이 일을 성취하려면 어떻게해야합니까? 나는 afterSelectionChange도 시도했다. 데이터 (selected 속성)가 변경되었지만 선택 사항이 변경된 것을 확인합니다.

select all 버튼은 내가 추가 한 것이 아닙니다. 헤더에있는 확인란을 활성화하면 ngGrid와 함께 제공됩니다.

enter image description here

답변

2

당신은 plunkr 예와보기 $scope.gridOptions.selectItem(index, true);

을 사용할 수 있어야합니다 : http://plnkr.co/edit/BffRURwCX7pkNcEo0x6C?p=preview

편집 :

좋아, 난 당신이 지금 필요로하는 무슨을 참조하십시오. CheckboxHeaderTemplate을 덮어 쓰고 다른 기능에 바인딩 할 수 있습니다.

$scope.selectAll = function(selectAll) { 
    angular.forEach($scope.myData, function(data, index){ 
     if (!selectAll) { 
     $scope.gridOptions.selectItem(index, false); 
     return; 
     } 

     if(data.status != 'Accepted'){ 
     $scope.gridOptions.selectItem(index, true); 
     } 
    }); 
    } 
+0

미안 해요, 난 자신을 분명하게해야 :로는 selectAll와

$scope.gridOptions = { data: 'myData', showSelectionCheckbox: true, checkboxHeaderTemplate: '<input class="ngSelectionHeader" type="checkbox" ng-show="multiSelect" ng-model="allSelected" ng-change="selectAll(allSelected)"/>' } 

정의. 별도의 "모두 선택"버튼이 없습니다. 헤더에있는 체크 박스를 활성화 할 때 제공되는 것입니다. –

+0

'$ scope.gridOptions.selectItem (index, false);'에'item.selected = false;'를 변경하여 항목을 선택 해제로 표시하십시오. 인덱스를 얻으려면 내 plunkr에서 functino 선언을 참조하십시오. –

+0

스크린 샷을 추가했습니다. 그 체크 박스 (ngGrid 버전의 select 모두)를 클릭하면 받아 들일 수없는 것들만 선택됩니다. –

관련 문제