2017-08-18 32 views
0

セルの編集後にoldValueとnewValueが異なる場合にのみ、CSSスタイルをセルに適用したいと考えました。だから、私は以下の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

答えて

0

この問題が修正されました、これは作業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(); 
    } 
です
関連する問題