Выбор строки сетки Ag

При выборе строк ag-grid с помощью выделения ячеек с помощью: this.gridOptions.rowMultiSelectWithClick = true; Можно ли получить доступ к последней выбранной строке только для вычислений и сохранить состояние ранее выбранных строк без изменений.


person Komal Aneja    schedule 17.05.2018    source источник
comment
Как узнать, когда будет ваш последний выбор, ведь когда this.gridOptions.rowMultiSelectWithClick = true вы можете щелкнуть и выбрать любое количество раз.   -  person Senal    schedule 17.05.2018
comment
С помощью getSelectedRows () он будет иметь экземпляр выбранных строк и будет хранить всю информацию о строках, я хочу получить доступ к экземпляру последней выбранной строки и должен выполнить вычисление, и, следовательно, существует требование для механизма для доступа к последней строке с помощью getSelectedRows, сохраняя состояние остальных строк неизменным.   -  person Komal Aneja    schedule 17.05.2018


Ответы (2)


В дополнение к тому, что упомянул Паритош, вы можете прослушивать событие rowSelected и поддерживать массив узлов.

<ag-grid-angular
   [rowSelection]="rowSelection"
   (rowSelected)="onRowSelected($event)"
   [rowMultiSelectWithClick]="true"
   (selectionChanged)="onSelectionChanged($event)"></ag-grid-angular>
selectedNodes: RowNode[];     

onRowSelected(event) {
   if(event.node.selected) {
      this.selectedNodes.push(event.node);
   }
}

getLastItem() {
   return this.selectedNodes[this.selectedNodes.length - 1];
} 

Вы можете вызвать метод getLastItem() в любое время в соответствии с вашими требованиями и получить последний выбранный узел.

person Senal    schedule 18.05.2018
comment
вам также необходимо позаботиться о сценарии и убедиться, что узел удален, если узел не выбран. так что это решение еще не идеально. Кроме того, у нас также есть api.getSelectedNodes() и api.getSelectedRows() в gridApi. Лучше использовать эти api для достижения этой цели - как обновлено в моем ответе. - person Paritosh; 18.05.2018

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

onRowSelected(event) {
  console.log("row " + event.node.data + " selected = " + event.node.selected);
}

Данные: event.node.data
Выбрано или нет: event.node.selected

<ag-grid-angular
  .....
  [rowSelection]="rowSelection"
  (rowSelected)="onRowSelected($event)"
  [rowMultiSelectWithClick]="true"
  (selectionChanged)="onSelectionChanged($event)"
  ></ag-grid-angular>

Вот живой пример: Plunk - ag-grid rowMultiSelectWithClick


Обновить

Затем вы можете использовать gridApi, чтобы получить последний выбранный узел. Это будет работать даже при отмене выбора строки. Это даст нам последнюю строку, которая была выбрана перед отменой выбора последней строки.

getLastSelectedNode(){
  let rows = this.gridApi.getSelectedRows();
  if(rows.length > 0)
    console.log(rows[rows.length - 1]);
  else
    console.log('No rows selected');
}

Обновленный Plunk

person Paritosh    schedule 17.05.2018