【问题标题】:Add attribute to gridcolumn xtype in extjs 4.2在 extjs 4.2 中向 gridcolumn xtype 添加属性
【发布时间】:2014-11-26 22:44:10
【问题描述】:

我有一个网格,我需要在网格单元格的 TD 上添加一个属性(不是表头,网格本身的单元格)。它可能是列标题中的相同文本,所以我想在创建列时在gridcolumn xtype 中定义它。在做一些研究时,我发现了一个我认为会有所帮助的tdAttrs 配置,但我不完全确定如何实现它。任何人都可以提供一些指示吗?如果这不是正确的方向,也请告诉我。

另外,我需要将此添加到我的应用程序中的所有gridcolumns,所以我需要为ext.grid.column.Column 添加覆盖或将其放在其他地方吗?

【问题讨论】:

标签: extjs extjs4


【解决方案1】:

最简单的方法是在列定义中添加renderer

renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
    metaData.tdAttr += ' new-attr="new-value"';
    return value;
}

它要求您为每个列定义定义渲染器。

您可以通过在 Ext.view.Table 中覆盖 renderCell 来自动执行此操作。 试试这样的:

renderCell: function(column, record, recordIndex, columnIndex, out){
    var origRenderer = column.renderer;
    column.renderer = function(value, metaData, record, rowIndex, colIndex, store, view) {
        metaData.tdAttr += ' new-attr="new-value"';
        return origRenderer ? origRenderer.apply(this, arguments) : value;
    }

    var result = this.callParent(arguments);
    column.renderer = origRenderer;
    return result;
}

基本上,这段代码在调用原始renderCell 实现之前切换渲染器。我没有看到任何其他选项。

【讨论】:

  • 好吧,我就是这么想的。我想我将不得不使用覆盖,因为这样我就可以在创建网格列时设置一个配置值。而且我已经为我的一半网格列设置了渲染器,因此覆盖将帮助我不必在任何地方编辑每个渲染器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多