我使用extjs库创建了一个网格.
首先创建了一个模型:
Ext.define('Option', {
extend: 'Ext.data.Model',
idProperty: 'OptionId',
fields: [
{ name: 'TradeDate' },
{ name: 'OptionType' }
]
});
Run Code Online (Sandbox Code Playgroud)
其次我创建了列数组:
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
}
]
Run Code Online (Sandbox Code Playgroud)
列列表renderer事件定义如下:
function RenderColumn (value, metaData, record, rowIdx, colIdx, store, view) {
metaData.style = 'background-color:#BBD5EE !important';
return value;
};
Run Code Online (Sandbox Code Playgroud)
我如何从RenderColumn功能中知道dataindex我在列列表中定义的内容?
它可以是ExternalId或者TradeDate我描述的情况.
我找到了解决方案:
grid.columns[colIdx].dataIndex
Run Code Online (Sandbox Code Playgroud)
网格是全局网格变量.
好吧,Sencha团队尚未记录这一点,但它已经可以使用了.您必须使用网格上的标头容器上提供的方法来执行此操作Ext.grid.View:
renderer: function(val, meta, rec, rowIdx, colIdx, store, view) {
var column = view.getHeaderAtIndex(colIdx);
var dataIndex = column.dataIndex;
}
Run Code Online (Sandbox Code Playgroud)
这样做的原因是因为Ext.grid.View继承Ext.table.View了一个方法getHeaderAtIndex,它应该是公开的,但尚未被记录.
我发现某些事情尚未通过此记录