【问题标题】:AG-GRID Angular - How to redraw one cellRender after change value on another cellRendererAG-GRID Angular - 如何在另一个 cellRenderer 上更改值后重绘一个 cellRender
【发布时间】:2021-09-22 15:26:59
【问题描述】:

我有一个带有两个 CellRenderer 的网格。 第一个是选择一个数字,第二个是多选。 在我更改第一个渲染器的数字后,我需要删除第二个渲染器中的所有值。

选择一个新号码后我有这个代码:

 onChangeClick(e: any) {
this.params.data.renderOne = e.value;

if (e.value) {
  var itemsToUpdate = [];

  let currentIndex = this.params.rowIndex;
  var rowNode = this.params.api.getDisplayedRowAtIndex(currentIndex);

  var data = rowNode.data;

  data.renderTwo = [];

  itemsToUpdate.push(data);

  this.params.api.applyTransactionAsync({ update: itemsToUpdate });
  this.params.api.refreshCells({ columns: ['renderTwo'] });
}

}

更改数字,我看到数组变为空,但我之前选择的多个值仍然出现在 refreshCells() 之后。

如何仅重绘“renderTwo”渲染器以清空单元格。 我尝试了 api.redrawRows() 但删除了行中的所有数据而不是重置 renderTwo?

Code

【问题讨论】:

    标签: angular ag-grid ag-grid-angular


    【解决方案1】:

    这是重绘行的界面:

    interface RedrawRowsParams {
        rowNodes?: RowNode[]; // the row nodes to redraw
    }
    

    你只能重绘整个行节点,所以如果你想刷新渲染器中的值,我建议在第二个渲染器中实现刷新方法:

      refresh(params: ICellEditorParams) {
        // set value into cell again
        this.params = params;
        this.renderTwoList = params.data.renderTwo;
        return true;
      }
    

    文档:

    请参阅following sample 中的实现。

    【讨论】:

    • 感谢您的回复。这是一种方法,但我需要再次设置值才能打开选项。刷新时列表变为空。如何重置然后再次设置干净的值?
    • 我找到了解决方案。在您提供的代码中,我需要做的是返回 false 而不是 true。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 2022-01-14
    • 2022-11-30
    • 1970-01-01
    • 2018-08-03
    • 2020-03-28
    • 2022-10-25
    • 2018-11-19
    相关资源
    最近更新 更多