我有一个要求,如果一列的值与相邻两行不同,则需要更新单元格的背景色。另外,我希望能够仅对网格的某些列而不是对所有列执行此操作。 (参考图片)
我所做的是:
如果值不同,我将更新 节点中的特定列。
this.gridApi.forEachNode(function (node) {
if (node.rowIndex + 1 < currDetailGridData.length) {
if (node.data['ColumnKey'] != currDetailGridData[node.rowIndex + 1]['ColumnKey']) {
var nodeToHighlight = node.columnController.gridColumns.find(x => x.colId = 'ColumnKey');
nodeToHighlight.colDef.cellClass += 'bgColorRed';
}
}
});
但是,这似乎不起作用。需要您的帮助来识别,我在这里做什么错了?
答案 0 :(得分:1)
可能是在state = {
array: JSON.parse(localStorage.getItem('session')) || []
};
内绑定rowData
之后执行的。
如果是这样,onGridReady
需要完成数据呈现过程,因此您可以在grid
中使用hack对其进行包装,但我不建议使用这种情况。
setTimeout
另一种方法是先准备setTimeout(() => {
this.gridApi.forEachNode(node =>{
...
})
}, 100);
,然后使用columnDef
API方法通知setColumnDefs
,避免循环检查。
最后一个,我推荐,在grid
cellClass
绑定作为function
columnDef