如何配置AG-Grid SSRM发送含多GroupBy子句且无组键的服务端请求?
配置AG-Grid实现服务端扁平分组查询
核心思路
要实现类似T-SQL GROUP BY的扁平聚合结果请求,关键是禁用AG-Grid默认的树形分组逻辑,仅传递分组字段给后端,同时让后端返回无嵌套的扁平数据结构。
具体配置步骤
启用服务器端行模型
先开启AG-Grid的服务器端行模型,这是服务端分组的基础:const gridOptions = { rowModelType: 'serverSide', serverSideFilter: true, // 按需开启,非必须 serverSideSort: true, // 按需开启,非必须 columnDefs: [ // 定义分组字段和聚合列 { field: 'category', rowGroup: true }, { field: 'region', rowGroup: true }, { field: 'totalSales', aggFunc: 'sum' }, // 后续请求补充的列可先定义,按需加载 { field: 'productName', hide: true }, { field: 'orderDate', hide: true } ] };自定义服务端数据源,构造不带组键的请求
通过getServerSideDatasource自定义请求逻辑,忽略AG-Grid默认传递的groupKeys参数,只提取groupBy字段数组发送给后端:gridOptions.getServerSideDatasource = (params) => { return { getRows: async (params) => { // 提取分组字段,直接使用groupBy数组,忽略groupKeys(避免树形层级请求) const groupByFields = params.request.groupBy; // 构造请求参数,仅包含分组字段和必要的分页/聚合信息 const requestParams = { groupBy: groupByFields, startRow: params.request.startRow, endRow: params.request.endRow, // 初始仅请求分组和聚合列,后续补充其他列时修改此处 columns: ['category', 'region', 'totalSales'] }; try { // 发送请求到后端接口 const response = await fetch('/api/grouped-data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(requestParams) }); const data = await response.json(); // 直接返回扁平数据,无需处理树形结构 params.success({ rowData: data.flatResults, // 后端返回的扁平聚合结果 rowCount: data.totalCount // 总条数,用于分页计算 }); } catch (error) { params.fail(); console.error('请求失败:', error); } } }; };后端响应格式要求
后端需返回无嵌套的扁平数组,结构与T-SQLGROUP BY查询结果一致:{ "flatResults": [ { "category": "Electronics", "region": "North", "totalSales": 15000 }, { "category": "Electronics", "region": "South", "totalSales": 12000 }, { "category": "Clothing", "region": "North", "totalSales": 8000 } ], "totalCount": 3 }后续请求补充其他列
当需要加载productName、orderDate等其他列时,修改requestParams.columns参数,或通过列的显示事件触发重新请求,后端更新返回字段即可。
关键注意事项
- 完全不依赖AG-Grid的
groupKeys参数,该参数用于构建树形分组层级,与我们需要的扁平聚合需求无关。 - 前端聚合列的
aggFunc仅作为展示提示,实际聚合逻辑由后端处理,避免前后端结果不一致。 - 确保后端返回的数据是纯扁平结构,没有任何嵌套的分组层级。
内容的提问来源于stack exchange,提问作者mordechai
相关产品推荐
相关产品推荐

