2016-06-08 3 views
0

같은 html로 두 개의 ui 그리드를 생성했습니다 (둘 다 동일 함). 제출 버튼 클릭시 선택된 행을 가져 오려고합니다. 두 번째 눈금에 대해 선택된 행을 가져올 수 있지만 첫 번째 눈금에 대해서는 가져올 수 없습니다. 이 같은2 그리드 (동일한 그리드가 두 번 반복)의 경우 UI 그리드가 선택된 행을 가져올 수 없습니다.

내가 선택한지고있어 행 :

onRegisterApi: function(gridApi) { 
    $scope.gridApi = gridApi; 
    $scope.mySelectedRows = $scope.gridApi.selection.getSelectedRows(); 
    } 

Plunker : http://plnkr.co/edit/SgYh9QzjCQDOKMMXATlF?p=info

거기에 어떤 방법이 그리드 모두의 행을 선택하세요?

미리 감사드립니다.

답변

1

DOM이 그리드를로드 할 때 API가 등록되기 때문입니다. 동일한 범위를 가진 두 개의 격자가 있으므로 두 번째로드 할 때 API는 $ scope.gridApi에 정의 된 것과 같습니다. 따라서 API로 수행하는 작업은 두 번째 모눈 인스턴스와 상호 작용하는 것입니다.

여기 해결책은 아마도 $ scope.gridOptions1, $ scope.gridOptions2 인 그리드를 분리하는 것입니다. 두 가지 모두에서 발생해야하는 작업에 대해서는 함수 내에서 독립적으로 각 API를 호출 할 수 있습니다.

내가 할 것 인 것이다 :

$scope.submitData = function() { 

    var selectedRows1 = $scope.gridApi1.selection.getSelectedRows(), 
     selectedRows2 = $scope.gridApi2.selection.getSelectedRows(), 
     selectedRows = selectedRows1.concat(selectedRows2); 

    console.warn(selectedRows); 
    alert(selectedRows.length) 
    if (selectedRows.length === 0) 
     alert('Please select an item from grid'); 
    else 
     alert(JSON.stringify(selectedRows)); 

    } 
: http://plnkr.co/edit/nLLR63L4H4NqLoZsGpkS?p=preview

당신의 제출 기능을 위해, 당신은 결과를 하나의 배열을 원하는 가정, 나는 그것이 하나 개의 결과를 제공하도록 기능을 업데이트했습니다

+0

이렇게 자세히 설명해 주셔서 감사합니다. 사실 2 그리드를 사용하는 목적은 그리드를 확장 된 뷰에서 볼 수있게하려는 것입니다. 간단하게하기 위해, 나는 동일한 html로 두 표를 게시했습니다. 따라서 두 번째 그리드는 기본적으로 그리드의 높이와 너비가 확장 된 뷰에서 보입니다. 그러나 데이터와 상태는 동일합니다. 나는 너를 설명 할 수 있기를 바란다. 또한 사용자가 그리드 2 행을 선택하면 자동으로 그리드 1 행이 선택되므로 마치 하나이기 때문에 가능합니다. –