2016-06-13 4 views
1

항상 선택의 첫 번째 행의 UI 그리드를 설정하는 방법 내부 onRegisterApi 또는 내부 필터 기능

 $scope.filter = function() { 
      $scope.gridApi.grid.refresh(); 
      $scope.gridApi.selection.selectRow($scope.gridOptions.data[0]); 
     } 

     $scope.singleFilter = function(renderableRows){ 
      var matcher = new RegExp($scope.filterValue); 
      renderableRows.forEach(function(row) { 
       var match = false; 
       [ 
        // 'id', 
        // 'study.name', 
        'title', 
        'occuredDate', 
        // 'eventType.name', 
        'description', 
        'createdDate' , 
        // 'priority.name', 
        'severity.name', 
        'status.name', 
        'createdDate' 
       ].forEach(function(field){ 
        if (field.indexOf('.') !== '-1') { 
         field = field.split('.'); 
        } 
        if (row.entity.hasOwnProperty(field) && row.entity[field].match(matcher) || field.length === 2 && row.entity[field[0]][field[1]].match(matcher)){ 
         match = true; 
        } 

       }); 
       if (!match){ 
        row.visible = false; 
       } 
      }); 
      return renderableRows; 
     }; 

아무 도움이되지 않습니다. 열 필터 또는 단일 필터를 사용하여 데이터를 필터링하는 경우에도 첫 번째 행을 항상 선택해야합니다. 그것은 ui-grid에서 가능합니까? 당신의 gridApi.selection.on.rowSelectionChanged α- 함수에 다음 줄을 추가

my plunker

+0

plunker이 시도를 작동하지 : 첫 번째 레코드가 항상 볼 수 바로 반환하기 전에 필터 기능에 선 renderableRows[0].visible = true;을 추가해야

(행) .entity. field.length === 2 && row.entity [field [0]] [field [1]] 디버그 할 때 if (row.entity.hasOwnProperty (field) && row.entity [필드] .match (matcher) ] .match (matcher)) { 매트 ch = true; } 사실입니까? – Vitalii

+0

@Vitalii 다시 확인하십시오 plunker 나를 위해 잘 작동 – Anton

답변

3

보십시오 : 행 번호 1은 항상 선택됩니다

gridApi.selection.selectRow($scope.gridOptions.data[0]);

이 방법.

갈래의 plunkr : plunkr

편집 : plunkr

+0

미안하지만 필터링 된 데이터 첫 번째 행을 선택하면 작동하지 않습니다. – Anton

+0

잘 작동합니다. 다른 아무 것도 선택하지 않은 다음 1을 입력하고 필터링을 시작하면 선택한 행 수는 1로 유지됩니다. 따라서 데이터를 필터링 할 때 선택한 행이 변경되지 않습니다. – Oliver

+0

내 잘못, 내가 잘못 설명 할 수 있습니다 .. 만약 당신이 선택한 행을 필터링 된 데이터의 첫 번째해야 필터 않았다. – Anton