javascript - Ag-grid 高亮单元格逻辑无法正常工作
问题描述
我使用ag-grid创建了一个可编辑的网格,我需要突出显示已更改的单元格。我添加了以下代码:
(cellValueChanged)="onDemandsCellValueChanged($event)"
和方法:
onDemandsCellValueChanged(params): void {
if (params.oldValue === params.newValue) {
return;
}
params.data.modified = true; // add modified property so it can be filtered on save
const column = params.column.colDef.field;
params.column.colDef.cellStyle = { 'background-color': '#e1f9e8' }; // highlight modified cells
params.api.refreshCells({
force: true,
columns: [column],
rowNodes: [params.node],
});
}
该单元格被突出显示,但是当我向上和向下滚动时,该列中的所有单元格都被突出显示。
您可以检查stackblitz上的行为。
此外,如果您有更好的方法,我愿意接受新的解决方案。
解决方案
我了解您的问题您可以像这样实现您想要的-您应该cellStyle
在列定义中使用,如文档中所示,此代码如下
cellStyle: params => {
if (
params.data["modifiedRow" +
params.node.rowIndex +"andCellKey"+
params.column.colDef.field]
) {
return { backgroundColor: "#e1f9e8" };
} else {
return null;
}
},
然后在此函数中onDemandsCellValueChanged
添加并修改此属性modified
为 true 并更改您的函数,如下所示
onDemandsCellValueChanged(params): void {
if (params.oldValue === params.newValue) {
return;
}
const column = params.column.colDef.field;
params.data["modifiedRow" + params.rowIndex + "andCellKey" + column] = true;
params.api.refreshCells({
force: true,
columns: [column],
rowNodes: [params.node]
});
}
现在,即使您滚动它也应该可以工作。这是关于 stackblitz的完整工作示例
推荐阅读
- scala - 地图不会在递归函数中添加条目
- rust - Rust 函数需要 return 关键字。为什么?
- crystal-lang - 泛型的问题推断类型
- python-3.x - 将 Pandas 列中的多个值拆分为单独的列
- python-3.x - 有条件地分割长行的最 Pythonic/最有效的方法是什么?
- excel - 如果两个单元格包含 excel 中的特定字符,则返回 True
- excel - 将 Excel 宏转换为 Google Apps 脚本
- java - 与并发收集一起使用的易失性?
- ruby-on-rails-4 - 从 activerecord 结果中删除记录
- vb.net - 使用 vb.net 为 Google Chrome 中的标签着色