[英]Styling ag-grid cell based on condition when cell value is changed
我想對單元格應用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();
}
}
我現在面臨的問題是,當我在同一列下編輯任何其他單元格時,單元格樣式(在這種情況下背景變為綠色)丟失了。 演示版
現在已解決此問題,這是有效的演示
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.