I am trying to refresh ag grid and reselect the last row before update.
This is my AG grid component.
onCellClicked = params => {console.log(params)
let node = params.node;
Promise.all([
node.setSelected(true, true),
this.props.actions.selectMarketingProspect(node.data),
this.props.actions.getMarketingCustomerNotes(this.props.dealerID,node.data.id)
]);
};
<AgGridReact
columnDefs={columnDefs}
defaultColDef={{
resizable: true,
sortable: true
}}
rowSelection='single'
getRowNodeId={data => data.id}
deltaRowDataMode={true}
frameworkComponents={frameworkComponents}
rowClassRules={this.state.rowClassRules}
detailCellRenderer={detailCellRenderer}
onFirstDataRendered={this.onFirstDataRendered}
onGridReady={this.onGridReady}
onSelectionChanged={this.onSelectionChanged}
onCellClicked={this.onCellClicked}
sideBar={toolPanelOptions}
onModelUpdated={this.onModelUpdated}
/>
</div>
Any ideas?
Based on what I read on the docs I believe that node.setselected should do the trick but I cant quite get there. Any help will be appreciated.
You can keep track of the last selected RowNode ids by listening to the selection changed event:
const [selectedRowIds, setSelectedRowIds] = React.useState<string[]>([]);
<AgGridReact
onSelectionChanged={(e) => {
const selectedNodes = e.api.getSelectedNodes();
if (selectedNodes.length === 0) return;
const selectedRowIds = selectedNodes
.map((n) => n.id)
.filter(Boolean) as string[];
setSelectedRowIds(selectedRowIds);
}}
{...}
/>
Then when you want to select it again, use GridApi.getRowNode(id) to get the RowNode you want to select and call RowNode.setSelected(true) to select it:
selectedRowIds.forEach((id) => {
gridApi?.getRowNode(id)?.setSelected(true);
});