刷新 Ag Grid 并选择最后选择的行
refresh AgGrid and reselect last selected row
我正在尝试刷新 ag 网格并重新选择更新前的最后一行。
这是我的AG网格组件。
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>
有什么想法吗?
根据我在文档中阅读的内容,我认为 node.setselected 应该可以解决问题,但我不能完全做到。任何帮助将不胜感激。
您可以通过监听 selection changed 事件来跟踪最后 selected RowNode
ids:
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);
}}
{...}
/>
然后当你想再次select时,使用GridApi.getRowNode(id)
得到你想要select的RowNode
并调用RowNode.setSelected(true)
到select它:
selectedRowIds.forEach((id) => {
gridApi?.getRowNode(id)?.setSelected(true);
});
我正在尝试刷新 ag 网格并重新选择更新前的最后一行。
这是我的AG网格组件。
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>
有什么想法吗?
根据我在文档中阅读的内容,我认为 node.setselected 应该可以解决问题,但我不能完全做到。任何帮助将不胜感激。
您可以通过监听 selection changed 事件来跟踪最后 selected RowNode
ids:
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);
}}
{...}
/>
然后当你想再次select时,使用GridApi.getRowNode(id)
得到你想要select的RowNode
并调用RowNode.setSelected(true)
到select它:
selectedRowIds.forEach((id) => {
gridApi?.getRowNode(id)?.setSelected(true);
});