问题的根本原因是applyTransaction方法只更新网格数据,而不更新网格状态。为了解决这个问题,我们需要手动更新网格状态。
以下是一个解决方案的示例代码:
// 初始化状态
const [gridApi, setGridApi] = useState(null);
const [rowData, setRowData] = useState([]);
const onGridReady = (params) => {
setGridApi(params.api);
}
const removeSelectedRow = () => {
const selectedRow = gridApi.getSelectedRows()[0];
if (!selectedRow) return;
const selectedRowData = [selectedRow];
// 手动删除行并更新网格状态
const updatedRowData = rowData.filter((row) => !selectedRowData.includes(row));
setRowData(updatedRowData);
// 更新网格数据
gridApi.applyTransaction({ remove: selectedRowData });
}
// 网格组件
// 删除按钮
在上面的示例代码中,我们使用useState钩子来跟踪网格的状态。当用户删除一行时,我们首先手动从state中删除该行,并更新网格状态。然后,我们使用applyTransaction方法更新网格数据。
这种方法不仅更新网格数据,还更新了网格状态,因此我们可以确保网格状态与网格数据一致。
上一篇:AgGridAngular中无法为日期过滤器创建自定义比较器。
下一篇:AGGrid版本25.3.0中有哪个等效属性可以替代[serverSideSortOnServer:true]?此属性在版本28.0.0中存在。