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的行,则更新数据,仍然会选择行。但是,这些行中的其他字段不会更新。
如何保留选择并更新所有数据?
答案 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回调中。