我使用extjs库创建了一个网格。
首先创建了一个模型:
Ext.define('Option', {
extend: 'Ext.data.Model',
idProperty: 'OptionId',
fields: [
{ name: 'TradeDate' },
{ name: 'OptionType' }
]
});
其次我创建了列数组:
var allColumns = [
{
text: 'Option Id',
width: 75,
sortable: true,
cls: 'grid-header-LadderStep',
dataIndex: 'ExternalId',
renderer: RenderColumn
},
{
text: 'Trade Date',
width: 65,
sortable: true,
cls: 'grid-header-LadderStep',
dataIndex: 'TradeDate',
renderer: RenderColumn
}
]
在列列表renderer
中,事件定义如下:
function RenderColumn (value, metaData, record, rowIdx, colIdx, store, view) {
metaData.style = 'background-color:#BBD5EE !important';
return value;
};
我如何通过我在列列表中定义的RenderColumn
函数dataindex
知道?
如果我描述的话,它可以是ExternalId
或TradeDate
。
我找到了解决方案:
grid.columns[colIdx].dataIndex
网格是全局网格变量。
答案 0 :(得分:5)
好的,所以,Sencha团队尚未记录这一点,但它已经可用。您必须使用网格Ext.grid.View
上的标头容器上提供的方法来执行此操作:
renderer: function(val, meta, rec, rowIdx, colIdx, store, view) {
var column = view.getHeaderAtIndex(colIdx);
var dataIndex = column.dataIndex;
}
这可行的原因是Ext.grid.View
继承自Ext.table.View
,其中有一个方法getHeaderAtIndex
,该方法应该是公开的,但尚未记录。
我发现某些事情尚未通过this
进行记录答案 1 :(得分:1)
您可以指定'defaultRenderer'然后使用this.dataIndex。 像这样:
{
text: 'Trade Date',
width: 65,
sortable: true,
cls: 'grid-header-LadderStep',
dataIndex: 'TradeDate',
defaultRenderer: RenderColumn
}
现在,您可以在渲染器中使用this.dataIndex。