当我折叠作为分组行标题的某一行时,这些行确实消失了,但标题没有返回,而是有一个空行,并且第一个子行仍然存在。除此之外,所有行都按照我想要的方式分组。
谢谢!
vue3
datasource = {
getRows: async (params) => {
const pageNumber = Math.floor(params.request.startRow / pageSize.value) + 1;
const sortingModel = params.request.sortModel;
const filterModel = params.request.filterModel;
const rowGroupCols = params.request.rowGroupCols;
const groupKeys = params.request.groupKeys;
const valueCols = params.request.valueCols;
console.log(params.request)
const url = new URL(`http://127.0.0.1:8000/api/${table}`);
url.searchParams.append('page', pageNumber);
if (sortingModel.length > 0) {
url.searchParams.append('sort', sortingModel[0].colId);
url.searchParams.append('direction', sortingModel[0].sort);
}
url.searchParams.append('filterModel', JSON.stringify(filterModel));
url.searchParams.append('rowGroupCols', JSON.stringify(rowGroupCols));
url.searchParams.append('groupKeys', JSON.stringify(groupKeys));
url.searchParams.append('valueCols', JSON.stringify(valueCols));
console.log(url.search);
await fetch(url)
.then(resp => resp.json())
.then(data => {
console.log("data ", data.data)
params.success({rowData: data.data, lastRow: data.total})
})
.catch(error => {
console.error('Error fetching data:', error);
params.fail();
});
},
};
params.api.setGridOption('serverSideDatasource', datasource);
laravel- controller.index
if ($request->has('rowGroupCols') && !count($groupKeys)) {
foreach ($rowGroupCols as $col) {
$query->select(DB::raw('DISTINCT '.$col['field']), DB::raw('MIN(id) AS id'))
->groupBy($col['field']);
}
}
if ($request->has('groupKeys')) {
foreach ($groupKeys as $index => $key) {
$columnName = $rowGroupCols[$index]['field'];
$query->where($columnName, $key);
}
}
为了使值在父级汇总,您需要为每个列对象定义一个聚合函数。参考:Ag-Grid聚合