Я решил это. Проблема заключалась в том, что мой forEachNode l oop был выполнен до того, как данные сетки были повторно загружены из вызова веб-службы. Кажется, что сетка загружает данные асинхронно, поэтому мой код для выбора строк работает нормально, и после его выполнения сетка перезагружает свои данные и теряет мой выбор.
Решением было использование нового событие называется onRowDataChanged. Я положил forEachNode l oop там, и он работает.
render() {
return (
<Container fluid className="ag-theme-balham" style={{ height: '100%', margin:'0px', padding:'0px' }}>
<AgGridReact
onGridReady={this.onGridReady}
onRowDataChanged={this.onRowDataChanged}
onRowSelected = {this.inventorySelectedHandler}
rowSelection='multiple'
pagination={true}
autoSize={true}
paginationAutoPageSize={true}
columnDefs={this.state.columnDefs}
rowData={this.state.rowData}
modules={AllModules}>
</AgGridReact>
</Container>
);
}
Вот новая функция:
onRowDataChanged = params => {
//console.log('InventoryList.onRowDataChanged!')
var invkey=this.state.invkey
if(invkey)
{
this.gridApi.forEachNode( (node) => {
if ( node.data.inventorykey === invkey ) {
//console.log('Found it!')
node.setSelected(true);}
})
this.setState({invkey:null})
}
}
Обратите внимание, что я также должен установить для invkey значение null в состоянии после завершения выбора строки.
Спасибо всем, кто ответил.