在Ag-grid中,如果在列分组的枢轴模式下使用列排序比较器,则会出现无效的情况。解决方案是在列分组后使用自定义聚合函数。下面是一个示例代码:
function customSorter(itemA, itemB) {
// column A value
let valA = itemA.value;
// column B value
let valB = itemB.value;
// your custom comparison logic goes here
// return -1, 0, or 1
if (valA < valB) {
return -1;
} else if (valA > valB) {
return 1;
} else {
return 0;
}
}
// define custom aggregation function
function customAggregator(params) {
let sum = 0;
// loop through all values and sum them up
params.values.forEach(value => {
sum += value;
});
// apply custom comparison logic to sort the values
let sortedValues = params.values.sort(customSorter);
// return the sum and the sorted values
return {
value: sum,
sortedValues: sortedValues
};
}
// set the custom aggregator for the column
columnDef.aggFunc = customAggregator;
// set the sort order for the column
columnDef.sort = 'asc';
在设置列定义时,将自定义聚合函数设置为聚合函数(aggFunc
),并将自定义排序器设置为排序器函数(sort
)。然后,将列定义传递给Ag-grid表格组件即可。这将确保在列分组和枢轴模式下正确排序。