AG Grid:cellRenderer 禁用值格式化程序

Posted

技术标签:

【中文标题】AG Grid:cellRenderer 禁用值格式化程序【英文标题】:AG Grid: cellRenderer disables value formatter 【发布时间】:2019-09-21 00:28:17 【问题描述】:

我的 AG-Grid 中有一个自定义 cellRenderer,我正在使用 valueformatter

const columnDefs = R.map(
  R.pipe(x => (
    headerName: strings[x.name],
    field: x.name,
    valueFormatter: contactInformationFormatter,
    comparator:
      x.name === 'group' || x.name === 'tendency'
        ? selectValueToComparableNumber
        : null,
    cellRenderer: x.compenent !== 'select' ? 'highlightCellRenderer' : null,
    cellEditor: componentToCellEditors[x.component],
    cellEditorParams:
      x.component === 'select' ? cellEditorParams[x.name] : null,
    getQuickFilterText: function(params) 
      return x.component === 'select' ? null : params.value;
    ,
  )),
  contactInformationCells
);

如果我排除 cellRenderer,格式化的值会正确显示。如果我包含它,我会得到未转换的值。这是一个错误吗?

这是我的格式化程序和我的cellRenderer

function contactInformationFormatter(params) 
  return strings[params.value] || params.value;


import React from 'react';
import  useSelector  from 'react-redux';

import  getSearchValue  from '../../layout/header/search-value-reducer';

function HighlightCellRenderer( value, ...props ) 
  const searchValue = useSelector(getSearchValue);
  if (searchValue && value.toLowerCase().includes(searchValue)) 
    return <strong>value</strong>;
  
  return <span>value</span>;


export default HighlightCellRenderer;

【问题讨论】:

【参考方案1】:

这不是错误。您必须使用cellRendererparams 中的valueFormatted 属性才能获得valueFormatter 的格式化输出。 value 属性保存原始的未格式化数据。所以cellRenderer 就像

function HighlightCellRenderer( valueFormatted, ...props ) 
  const searchValue = useSelector(getSearchValue);
  if (searchValue && valueFormatted.toLowerCase().includes(searchValue)) 
    return <strong>valueFormatted</strong>;
  
  return <span>valueFormatted</span>;

【讨论】:

谢谢,我正在努力寻找问题所在。 ag-grid 文档说 “可以将两者结合使用,在这种情况下,值格式化程序的结果将被传递给单元格渲染器。” - 但他们没有提到这一点你必须使用 valueFormatted 字段。 如果有人对带有和不带值格式化程序的字段重用相同的单元格渲染器 - ` value = params.valueFormatted!=null ? params.valueFormatted : params.value; `

以上是关于AG Grid:cellRenderer 禁用值格式化程序的主要内容,如果未能解决你的问题,请参考以下文章

从 cellrenderer 调用父函数,例如在 vuejs ag-grid-vue 上发出

在 ag-grid 中显示图像

带有按钮单击的 Ag-Grid cellRender

如何在 Ag-Grid React.js 中设置默认检查?

Angular 6 ag-grid 单元格渲染器单击功能

ag-grid 将 cellRendererParams 设置为行数据中的值