ag-grid:使用“ serverSide” rowModel刷新当前视图

时间:2018-08-06 16:33:00

标签: javascript angular typescript ag-grid

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

使用gridOptions:{ rowModel: 'serverside'}时,数据会通过getRows回调加载。

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

现在看来,不调用gridApi.purgeServerSideCache()绝对不可能做到这一点,但是这会导致所有打开的行组崩溃,出于明显的UX原因,我希望避免这种情况。

1 个答案:

答案 0 :(得分:0)

此指向农业网格文档的链接应该会有所帮助:https://www.ag-grid.com/javascript-grid-server-side-model-grouping/#preserving-group-state

从本质上讲,文档指出使用gridApi.purgeServerSideCache()是强制重新加载的首选方法,但是他们继续说以下内容应该可以解决您遇到的UX问题:

  

保留组状态

     

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

     

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

 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);
>         }
>     }); 
>  }
  

请注意,在第3步中,如果在expandGroupIds中定义了当前块的新加载的行节点,则会对其进行扩展,   这是应用程序维护的一组组密钥。这个   将产生级联效应,因为扩大团队规模会导致新的   要加载的块。

     

为了轻松查找组行节点,请执行以下操作   建议使用回调:gridOptions.getRowNodeId()。