如何禁用Server-Side模式下Ag Grid的自动重载功能?
解决AG Grid服务端模型下的不必要请求问题
我来帮你搞定这两个头疼的自动请求触发问题,这都是服务端行模型(Server-Side Row Model)里很常见的场景:
1. 首次getRows后设置columnDefs避免二次请求
当你首次通过getRows拿到数据后,调用api.setColumnDefs默认会触发表格刷新,进而发起第二次不必要的请求。要阻止这个行为,你可以在调用setColumnDefs时传入第二个参数,开启suppressRefresh:
// 首次getRows返回结果后 const dynamicColumnDefs = 你的动态生成列定义; api.setColumnDefs(dynamicColumnDefs, { suppressRefresh: true });
这样设置列定义只会更新表头和列配置,不会触发表格的自动刷新,自然也就不会发起额外的getRows请求。如果之后需要让单元格和新列匹配渲染,你可以调用api.refreshCells()手动更新,这不会触发服务端请求。
2. 设置过滤器值/销毁过滤器时避免自动重载
设置过滤器值
调用setFilterValues时,默认会触发过滤器变更事件,进而触发服务端请求。你可以利用该方法的第二个参数suppressFilterChangeEvent,设为true来阻止事件触发:
const filterInstance = api.getFilterInstance('目标列ID'); filterInstance.setFilterValues(后端返回的过滤器选项, true); // 第二个参数设为true
这样设置过滤器选项后,不会触发表格的自动请求,完全贴合你的业务需求。
销毁过滤器
调用destroyFilter时,默认会触发表格刷新和服务端请求。同样,你可以传入第二个参数suppressRefresh来阻止这个行为:
api.destroyFilter('目标列ID', true); // 第二个参数设为true
这个参数会让表格只销毁过滤器实例,不触发任何刷新或请求操作,彻底解决每次销毁都发请求的问题。
内容的提问来源于stack exchange,提问作者manymanymore
相关产品推荐
相关产品推荐

