2016-07-29 7 views
1

ngグリッドで一括処理を行っています。すべての行を選択すると、最初に選択した項目は正しいものの、最初の一括処理後は選択項目が空白になります。下のコードでは、「移動するには少なくとも1行を選択する必要があります」という通知が送信されます。詳細が必要な場合はお知らせください。前もって感謝します。角度ngグリッド選択されたアイテムは最初の反復後に空白です

vm.init = function() { 
    vm.title = "Orphan Entries"; 
    selectReport("OrphanEntries"); 
}; 
/* initialization */ 
vm.init(); 

vm.gridOptionsReports = { 
      data: 'vm.data', 
      multiSelect: true, 
      enableColumnResize: true, 
      showFooter: true, 
      showSelectionCheckbox: true, 
      enableRowSelection: true, 
      selectWithCheckboxOnly: true, 
      selectedItems: [], 
      selectionCheckboxColumnWidth: 25, 
      enablePaging: true, 
      pagingOptions: $scope.pagingOptions 
     } 

$scope.applyBulkAction = function(){ 
    if(vm.selectedAction == 'notset'){ 
     Notification.error("You need to select a bulk action."); 
    }else{ 
     var rows = vm.gridOptionsReports.selectedItems; 
     if(rows.length < 1){ 
      Notification.error("Must select at least 1 row to move."); 
     }else{ 
      var toggleTo = 0; 
      if(vm.selectedAction == 'move'){ 
       toggleTo = 1; 
      } 
      var data = ""; 
      var first =true; 
      for(var i = 0; i< rows.length; i++){ 
       if(rows[i].selectedToBeMoved != toggleTo){ 
        if(first){ 
         data = '{"ID":"'+rows[i].iD+'"}'; 
         first = false; 
        }else{ 
         data = data + ',{"ID":"'+rows[i].iD+'"}' 
        } 
       } 
      } 
      if(data == ""){ 
       Notification.error("The rows that you have selected have already been flagged.") 
       }else{ 
        return ReportService.flagOrphansToBeMoved(data).then(flagOrphansToBeMovedComplete).catch(flagOrphansToBeMovedFailed); 

        function flagOrphansToBeMovedComplete(response) { 
         if(!response.data.error && response.data.status == 200){ 
          Notification.success('Bulk action was successful. All flagged rows will be moved during the next scan.'); 
          //vm.gridOptionsReports.selectedItems = []; 
          vm.init(); 
         }else{ 
          Notification.error('Error scheduling to move orphan.'); 
         } 
         return response; 
        } 

        function flagOrphansToBeMovedFailed(error) { 
         Notification.error('Error scheduling to move orphan.'); 
        } 
       } 
      } 
     } 
    } 

UI

enter image description here

UIコード:

<div class="row smallPaddingBot"> 
<div class="col-sm-2"> 
    <select ng-model="vm.selectedAction" class="form-control"> 
     <option value="notset">Bulk Actions</option> 
     <option value="move">Flag Selected To Be Moved</option> 
     <option value="dontMove">Flag Selected Not To Moved</option> 
    </select> 
</div> 
<div class="col-sm-1"> 
    <button type="button" class="btn btn-default" ng-click="applyBulkAction()">Apply</button> 
</div> 

+0

あなたにも視野を投稿していただけません? –

+0

@ LeonardoLana私はちょうど私が各繰り返しをステップ実行するように見えるものを追加しました。 –

答えて

0

問題は、私はng-を再作成していたということでした私は毎回グリッドをつけていたので、私は迷子になってしまった解決策は、gridOptionsReports.selectedItemsをスコープ変数に設定し、そのスコープ変数を参照することでした。

var rows = vm.gridOptionsReports.selectedItems; 

:へ

selectedItems: [], 

selectedItems: vm.selectedRow, 

から

var rows = vm.selectedRows; 
関連する問題