簡體   English   中英

根據單元格值更改時的條件對網格單元格進行樣式設置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM