我有一个网格,我需要在网格单元格的TD上添加一个属性(不是标题,网格本身的单元格)。它可能与列标题中的文本相同,因此我想在创建列时在gridcolumn
xtype中定义它。在进行一些研究时,我发现了tdAttrs
配置,我认为这会有所帮助,但我不完全确定如何实现它。谁能提供一些指示?如果这不是正确的方向,请告诉我。
另外,我需要将此添加到我的应用程序中的所有gridcolumn
中,那么我是否需要为ext.grid.column.Column
添加覆盖或将其放在其他位置?
答案 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
实现之前切换渲染器。我没有看到任何其他选择。