以下是一个使用Ag Grid和React来根据分组数据状态更改分组行颜色的示例代码:
import React, { useState } from 'react';
import { AgGridReact } from 'ag-grid-react';
import 'ag-grid-community/dist/styles/ag-grid.css';
import 'ag-grid-community/dist/styles/ag-theme-alpine.css';
const GridExample = () => {
const [gridOptions, setGridOptions] = useState({
defaultColDef: {
flex: 1,
minWidth: 150,
filter: true,
sortable: true,
},
autoGroupColumnDef: {
flex: 1,
minWidth: 200,
},
groupUseEntireRow: true,
rowStyle: function (params) {
// 检查是否是分组行
if (params.node.group) {
// 检查分组数据状态
if (params.node.allLeafChildren.some(leaf => leaf.data.status === 'Completed')) {
// 如果分组内有至少一个子行的状态为"Completed",则将行背景色设置为绿色
return { background: 'lightgreen' };
} else if (params.node.allLeafChildren.some(leaf => leaf.data.status === 'In Progress')) {
// 如果分组内有至少一个子行的状态为"In Progress",则将行背景色设置为黄色
return { background: 'yellow' };
}
}
return null;
},
columnDefs: [
{ headerName: '任务', field: 'task' },
{ headerName: '状态', field: 'status' },
],
rowData: [
{ task: '任务1', status: 'Completed' },
{ task: '任务2', status: 'Completed' },
{ task: '任务3', status: 'In Progress' },
{ task: '任务4', status: 'Not Started' },
],
});
return (
);
};
export default GridExample;
在这个示例中,我们使用了rowStyle
属性来定义行样式。在rowStyle
函数中,我们首先检查行是否是一个分组行(params.node.group
),然后根据分组数据状态来设置背景色。我们使用params.node.allLeafChildren
来获取分组中的所有子行,然后使用some
方法来检查子行的状态是否符合条件。
在这个示例中,如果分组内至少有一个子行的状态为"Completed",则将分组行的背景色设置为绿色;如果分组内至少有一个子行的状态为"In Progress",则将分组行的背景色设置为黄色。
你可以根据自己的需求来修改这个示例代码,以适应你的数据和样式要求。