Выберите строку сетки 2, когда выбрана строка сетки 1 (наоборот)

0

У меня две сетки с одинаковыми данными. Моя цель состоит в том, когда строка выбирается в одной сетке, соответствующая строка в другой сетке также выбирается. 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();
    }

заранее спасибо

  • 0
    Не могли бы вы описать, с чем именно вы столкнулись?
Теги:
angular-ui-grid
ui-grid

1 ответ

0
Лучший ответ

обновите свой 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);
      });
    }
  };
  • 0
    Большое спасибо за это. Это прекрасно работает для выбора. Точно так же у нас есть что-нибудь, чтобы отменить выбор строки? Например, если строка отменяется в одной сетке, она отменяется и в другой.
  • 1
    обратитесь к API: ui-grid.info/docs/#/api/ui.grid.selection.api:PublicApi , у вас есть unSelectRow чтобы отменить unSelectRow

Ещё вопросы

Сообщество Overcoder
Наверх
Меню