У меня две сетки с одинаковыми данными. Моя цель состоит в том, когда строка выбирается в одной сетке, соответствующая строка в другой сетке также выбирается. Plunker: http://plnkr.co/edit/BBfMxvsv0OUsjiqblBJQ?p=preview
Я получаю выбранную сетку следующим образом:
onRegisterApi: function(gridApi) {
console.log('Loaded Grid API 1');
$scope.gridApi1 = gridApi;
$scope.mySelectedRows1 = gridApi.selection.getSelectedRows();
}
заранее спасибо
обновите свой onRegisterApi
для первой сетки примерно так:
onRegisterApi: function(gridApi) {
console.log('Loaded Grid API 1');
$scope.gridApi1 = gridApi;
$scope.mySelectedRows1 = gridApi.selection.getSelectedRows();
gridApi.selection.on.rowSelectionChanged($scope,function(row){
$scope.selectedRow = row.entity;
$scope.gridApi2.selection.selectRow($scope.selectedRow);
});
}
Я привязываю событие rowSelectionChanged
первой сетке, поэтому, когда пользователь выбирает строку, которую она запускает. Я сохраняю выбранную строку в $scope.selectedRow
Вторая сетка выбирается вызовом API: selectRow
. Обратите внимание, что вам необходимо передать строковый объект для получения правильного выбора:
$scope.gridApi2.selection.selectRow($scope.selectedRow); <-- selectedRow is row entity
наконец, вы получите что-то вроде этого:
$scope.gridOptions1 = {
saveFocus: false,
saveScroll: true,
enableFiltering: true,
enableGridMenu: true,
onRegisterApi: function(gridApi) {
console.log('Loaded Grid API 1');
$scope.gridApi1 = gridApi;
gridApi.selection.on.rowSelectionChanged($scope,function(row){
$scope.gridApi2.selection.selectRow(row.entity);
});
}
};
$scope.gridOptions2 = {
saveFocus: false,
saveScroll: true,
enableFiltering: true,
enableGridMenu: true,
onRegisterApi: function(gridApi) {
console.log('Loaded Grid API 2');
$scope.gridApi2 = gridApi;
gridApi.selection.on.rowSelectionChanged($scope,function(row){
$scope.gridApi1.selection.selectRow(row.entity);
});
}
};
unSelectRow
чтобы отменить unSelectRow