При выборе строк ag-grid
с помощью выделения ячеек с помощью: this.gridOptions.rowMultiSelectWithClick = true
; Можно ли получить доступ к последней выбранной строке только для вычислений и сохранить состояние ранее выбранных строк без изменений.
Выбор строки сетки Ag
Ответы (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
вам также необходимо позаботиться о сценарии и убедиться, что узел удален, если узел не выбран. так что это решение еще не идеально. Кроме того, у нас также есть
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');
}
person
Paritosh
schedule
17.05.2018
this.gridOptions.rowMultiSelectWithClick = true
вы можете щелкнуть и выбрать любое количество раз. - person Senal   schedule 17.05.2018