Ext JS DataIndex

时间:2011-10-30 14:21:30

标签: extjs

我使用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知道?

如果我描述的话,它可以是ExternalIdTradeDate

我找到了解决方案:

grid.columns[colIdx].dataIndex

网格是全局网格变量。

2 个答案:

答案 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。