在更新数据时保留角度ui网格中的选择

时间:2016-03-23 20:03:07

标签: angularjs angular-ui-grid

http://plnkr.co/edit/r9hMZk?p=preview

我有一个ui-grid,我启用了多选。我希望能够在保留选择的同时更新数据。如果我只更新数据,则不会保留选择。

$scope.gridOpts.data = data2;

但是我已经定义了一个rowIdentity函数,因此id列唯一地标识了一行。

"rowIdentity" : function(row) {
  return row.id;
}

现在,如果我选择id = Bob且id = Lorraine的行,则更新数据,仍然会选择行。但是,这些行中的其他字段不会更新。

如何保留选择并更新所有数据?

1 个答案:

答案 0 :(得分:3)

我认为你需要自己跟踪你的身份证。因此,您应该删除rowIdentifier,而是在swapData函数的开头添加此部分。

    $scope.selIds = [];
    for (var selRow of $scope.gridApi.selection.getSelectedRows()) {
      $scope.selIds.push(selRow.id);
    }

除此之外,在rowsRendered上添加一个事件处理程序以重新选择以前选择的行

  gridApi.core.on.rowsRendered($scope,function() {
    for (var selId of $scope.selIds) {
      for (var row of $scope.gridOpts.data) {
        if (selId == row.id) {
          $scope.gridApi.selection.selectRow(row);
        }
      }
    }
  });

您可以将其放入registerApi回调中。