ag grid:可以自定义单元格何时闪烁吗?

问题描述 投票:0回答:2

enableCellChangeFlash
用于闪烁获取更新内容的单元格。 但是,我在几列上使用 valueFormatters,并且我只想在渲染内容而不是基础值发生变化时闪烁单元格内容。

示例:我的价格是浮动的,例如:3.2321393。我将其固定为 2 位小数(例如 3.23)。现在,我只想在渲染值发生变化(例如 3.24)时闪烁单元格,但当基础值发生变化(例如 3.23214)而没有可见变化时则不想闪烁。

这可能吗?

ag-grid
2个回答
0
投票

我建议将

enableCellChangeFlash
设置为 false,然后使用
onCellValueChanged
回调来查看应用
valueFormatter
后新值是否已更改,如果已更改,则使用 api 方法
 flashCells
闪烁单元格。

这是您的

onCellValueChanged
的样子:

  onCellValueChanged: function (params) {
    const valueFormatter = params.column.getColDef().valueFormatter;
    const newFormattedValue = valueFormatter
      ? valueFormatter({ value: params.newValue })
      : params.newValue;
    const oldFormattedValue = valueFormatter
      ? valueFormatter({ value: params.oldValue })
      : params.newValue;
    if (newFormattedValue != oldFormattedValue) {
      // Flash the cell
      params.api.flashCells({
        rowNodes: [params.node],
        columns: [params.column],
      });
    }
  },

演示


0
投票

@ViqMontana 的答案指出了正确的方向,但需要为每个需要更新的单元格调用

flashCells

相反,我已将

equals
函数中的代码移植到可以选择 passed 到列定义中。

// Equals function to check if cell value has *visibly* changed. Only then the cell will flash
function equalsCellFN(valueA, valueB) {
  const valueFormatter = this.valueFormatter;
  const newFormattedValue = valueFormatter ? valueFormatter({ value: valueA }) : valueA;
  const oldFormattedValue = valueFormatter ? valueFormatter({ value: valueB }) : valueB;
  return oldFormattedValue === newFormattedValue
}
© www.soinside.com 2019 - 2024. All rights reserved.