我想对单元格应用css样式,只有在单元格编辑后oldValue和newValue不同的情况下。因此,我在onCellValueChanged()处理程序中执行了以下操作,
onCellValueChanged: function(params) {
if (params.oldValue !== params.newValue) {
params.colDef.cellStyle = function(params) {
return {
backgroundColor: 'green'
};
}
params.api.redrawRows();
}
}
但这会在条件满足时将css更改应用于该特定列的所有单元格。我不确定如何仅将“ cellStyle”应用于受影响的单元格。
更新1:
我将其更改为以下内容并开始工作,
onCellValueChanged: function(params) {
console.log(params);
var cellValue = params.data[params.colDef.field];
if (params.oldValue !== params.newValue) {
params.colDef.cellStyle = function(params) {
if(params.value==cellValue){
return {
backgroundColor: 'green'
};
}
}
params.api.redrawRows();
}
}
我现在面临的问题是,当我在同一列下编辑任何其他单元格时,单元格样式(在这种情况下背景变为绿色)丢失了。
Demo
最佳答案
现在已解决此问题,这是有效的demo
function cellValueChangedListener(params) {
var oldValue = params.oldValue;
var newValue = params.newValue;
var recordKey = params.data.key;
var columnField = params.colDef.field;
if (!_.isEqual(oldValue, newValue)) {
if (!cellMetadata[recordKey]) {
cellMetadata[recordKey] = {};
}
if (!cellMetadata[recordKey][columnField]) {
cellMetadata[recordKey][columnField] = {};
}
cellMetadata[recordKey][columnField].trackChanges = true;
cellMetadata[recordKey][columnField].tooltip =
columnField.toUpperCase() + ' ' + 'Changed from' + ' ' + oldValue + ' '
+ 'to' + ' ' + newValue;
}
params.api.redrawRows();
}
关于javascript - 根据单元格值更改时的条件来设置农业网格单元的样式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45751955/