Как программно выбрать несколько строк в ag-Grid? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть массив идентификаторов строк, хранящихся в tempSelected, и я хотел бы программно установить каждую строку в списке на выбранную. Вот что я пытаюсь:

let len = tempSelected.length;
this.gridApi.forEachNode(function (node) {
  for(let i=0; i<len; i++){
    if(node.id === tempSelected[i]){
      node.setSelected(true);
    }
  }
});

В конце этого цикла я хочу, чтобы была выбрана каждая строка в tempSelected, но сейчас только последний идентификатор в массиве tempSelectedвыбирается, а остальные нет.

Я установил rowSelection = 'multiple', поэтому он не должен ограничиваться 1 выбором. Я также попытался изменить node.setSelected(true); на node.setSelected(true, false); на основе того, что я прочитал здесь, на веб-сайте ag-grid , но это не изменило результат.

Как выбрать несколькоузлы сразу?

1 Ответ

1 голос
/ 12 октября 2019

Я предполагаю, что это потому, что вы обрабатывали подсветку строк в хуке жизненного цикла ngOnInit или в событии ag-grid gridReady. Оба события не подходят, так как ловушка ngOnInit запускается, когда инициализация завершена, и gridReady запускается, когда сама сетка готова (но данные еще не обработаны).

Поэтому, чтобы быть в безопасности и предполагая, что вы хотите обработать выделение при загрузке, вы должны использовать вместо этого событие firstDataRendered.

Для вашего случая вы можете связать firstDataRenderedсобытие некоторого метода, такого как onFirstDataRendered. Кроме того, убедитесь, что rowSelection привязан к multiple, чтобы разрешить множественный выбор.

<ag-grid-angular
  (firstDataRendered)="onFirstDataRendered($event)"
  [rowSelection]="'multiple'"

  // other events and props
></ag-grid-angular>

И в ваших component.ts,

onFirstDataRendered(params) {
  let len = tempSelected.length;
  this.gridApi.forEachNode(node => {
    for (let i=0; i<len; i++) {
      if(node.id === tempSelected[i]){
        node.setSelected(true);
      }
    }
  });
}

Я создал демоболее здесь .

...