在extjs 4.2中将属性添加到gridcolumn xtype

时间:2014-11-25 21:13:55

标签: extjs extjs4

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

另外,我需要将此添加到我的应用程序中的所有gridcolumn中,那么我是否需要为ext.grid.column.Column添加覆盖或将其放在其他位置?

1 个答案:

答案 0 :(得分:1)

最简单的方法是将renderer添加到列定义:

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

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

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

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实现之前切换渲染器。我没有看到任何其他选择。