ExtJS:如何为initComponent中的Grid列设置默认值?

时间:2018-06-21 13:00:02

标签: extjs grid set default

如您在下面看到的,我正在使用Ext.Array.merge来渲染columns中的initComponent

我尝试将columns的{​​{1}}'flex属性设置为默认属性。 我该如何实现这种安排?

initComponent

这是替代功能之一

initComponent: function () {
        var me = this;
        Ext.on('resize', function () { me.height = window.innerHeight - App.MAIN_FOOTER_HEIGHT - App.MAIN_HEADER_HEIGHT - 100 });

        me.createGridMenu();

        me.columns = Ext.Array.merge(me.getListColsStart(), me.getListCols(), me.getListColsEnd());

        //I need to set through here. Any solution such as setDefaults or dot notation to fetch defaults of columns?

        me.callParent(arguments);
    },

更新: 相关的第二个问题移至Setting defaults to panel items for nested objects帖子中。仅供参考。

1 个答案:

答案 0 :(得分:1)

以下是API文档,columns documentation的摘录(还包含与您的问题相关的示例):

  

这也可以是   Ext.grid.header.Container可能会覆盖某些默认值   必要时进行配置。例如,特殊布局可能是   覆盖以使用更简单的布局,或者可以设置默认值   由所有列共享

因此,就您而言,这是将flex设置为所有列的默认配置的方法:

me.columns = {
    items: Ext.Array.merge(
        me.getListColsStart(),
        me.getListCols(),
        me.getListColsEnd()
    ),
    defaults: {
        flex: 1
    }
}

编辑 如果flex属性必须仅应用于列的子集,则实现此目的的一种方法是将数组map函数应用于所需的子集:

me.columns = Ext.Array.merge(
    me.getListColsStart(),
    Ext.Array.map(me.getListCols(), function(listColConfig) {
        listColConfig.flex = 1;
        return listColConfig;
    }),
    me.getListColsEnd()
)