Javascript ag grid:使用'刷新当前视图;服务器端&x27;rowModel

Javascript ag grid:使用'刷新当前视图;服务器端&x27;rowModel,javascript,angular,typescript,ag-grid,Javascript,Angular,Typescript,Ag Grid,非常简单的问题,似乎无法找到答案: 使用时,通过getRows回调加载数据 但是,我们如何简单地“刷新”网格,以便它再次执行最后一个getRows调用并就地更新数据呢 现在,如果不调用,似乎完全不可能做到这一点,但是这会导致所有打开的行组崩溃,这是出于明显的用户体验原因,我想避免的。这个指向ag grid文档的链接应该很有帮助: 本质上,文档声明使用gridApi.purgeServerSideCache()是强制重新加载的首选方式,但他们接着说,以下内容应该可以解决您的UX问题: 保存组状态

非常简单的问题,似乎无法找到答案:

使用时,通过
getRows
回调加载数据

但是,我们如何简单地“刷新”网格,以便它再次执行最后一个getRows调用并就地更新数据呢


现在,如果不调用,似乎完全不可能做到这一点,但是这会导致所有打开的行组崩溃,这是出于明显的用户体验原因,我想避免的。

这个指向ag grid文档的链接应该很有帮助:

本质上,文档声明使用gridApi.purgeServerSideCache()是强制重新加载的首选方式,但他们接着说,以下内容应该可以解决您的UX问题:

保存组状态

可能有必要将组扩展到 所需的初始状态或将网格恢复到之前的状态 清除/重新加载数据

这可以通过在加载块时展开行节点来实现 服务器端数据源。以下代码段概述了一个可能的解决方案 方法:

请注意,在步骤3中,如果在ExpandedGroupId中定义了当前块的新加载行节点,则会展开这些节点, 它是由应用程序维护的组密钥数组。这 将产生级联效应,因为扩展组将导致新的 要加载的块

为了方便地查找组行节点,实现以下 建议回调:gridOptions.getRowNodeId()


这肯定是可行的,但在处理多个自定义网格时,get会很乏味,因为每次刷新后都需要保存整个网格状态并将其恢复。对于任何使用简单网格的人:试试这个答案。我个人决定直接给ag网格打补丁,这样我们就可以刷新单行并保持其他一切正常。遗憾的是,我不被允许分享代码。我暂时接受这个答案。@Xceno我同意你不能共享代码,但这对世界上其他开发者来说是一个很好的贡献,他们也在做同样的事情。您认为您至少可以用您的解决方案想法指导开发人员吗?
 function getRows(params) {
>     // 1) get data from server
>     var response = getServerResponse(params.request);
> 
>     // 2) call the success callback
>     params.successCallback(response.rowsThisBlock, response.lastRow);
> 
>     // 3) to preserve group state we expand any previously expanded groups for this block
>     rowsInThisBlock.forEach(row => {
>         if (expandedGroupIds.indexOf(row.id) > -1) {
>             gridOptions.api.getRowNode(row.id).setExpanded(true);
>         }
>     }); 
>  }