AG排序时刷新网格分页



我有几页数据表,它们通过AG网格实现分页。我们使用Angular 12和一个自定义CSS框架,该框架支持我公司构建的AG网格。当我单击标题列对列进行排序时,onGridReady事件会触发,它会调用api来重置网格行选项,因此排序永远不会发生。

我的组件的AG网格选项:

public gridFlex: customGridOptions = {
name: 'Data Panel',
rowSelection: 'single',
rowModelType: 'serverSide',
serverSideStoreType: this.serverSideStoreType,
pagination:true,
paginationPageSize: this.pageSize,
cacheBlockSize:this.pageSize,
cacheOverflowSize:1,
maxBlocksInCache:1,
maxConcurrentDatasourceRequests:1,
infiniteInitialRowCount:1,
onGridReady: this.onGridReady.bind(this),
onPaginationChanged:this.onPageChange.bind(this),
}

HTML

<custom-table
[girdOptions]="gridFlex"
[colDefs]="colsGrid"
>
</custom-table>

引起刷新的功能:

onGridReady(params:any){
this.gridApi = params.api
this.gridColumnApi=params.columnApi
if(this.request !== undefined && this.request !== null){
let filterModel = {
request: {type: 'equals', filter: this.request}
};
this.gridApi.setFilterModel(filterModel)
}
let datasource = {
getRows: (params:any) => {
let filterModel = params.request.filterModel
let page = params.request.endRow/this.pageSize
let formData:any = {"start": params.request.startRow, "page": page, "size": this.pageSize}
if(!this.isObjEmpty.transform(filterModel)){
for(let key in filterModel){
if(filterModel[key].filter=='#000'){
formData[key]=""
} else {
formData[key]=filterModel[key].filter
}
}
formData['filter']='filtered'
}
this.apiService.getTableDetails(formData).subscribe(data => {
params.successCallback(data.data, data.count)
})
}
}
params.api.setServerSideDatasource(datasource)
}

我知道onGridReady函数中的api调用导致了刷新。我只是不确定在分页更改时设置所需数据的变通方法,但在对标头进行排序时不进行刷新。由于我使用的框架,我没有不将数据绑定到自定义组件的选项,我必须使用这个标准化的框架。

所以我完全忽略了这里的服务器端渲染。实际情况是,我们使用1个页面进行服务器端排序,而其他页面则不进行排序。创建页面时,它们都是按照服务器端排序的方式创建的。我根本不需要回调函数,因为它只用于服务器端排序。删除它并从网格选项中删除服务器端选项解决了此问题。

最新更新