【问题标题】:ExtJS4 - Iterate through Store in GridExtJS4 - 遍历存储在网格中
【发布时间】:2012-04-06 03:10:21
【问题描述】:

我想遍历存储并动态创建网格列。当我在 Store 的 onLoad 事件中使用 columns.push 方法时,我得到了这个错误:“headerCtCfg is undefined”。这是我的代码:

Ext.define('App.view.UserList' ,{
     extend: 'Ext.grid.Panel',
     alias : 'widget.userlist',

     store: 'Users',

     initComponent: function() {
        var store = Ext.getStore( this.store );
        store.on('load', function () {
            var columns = this.columns = [];
            columns.push( {header: 'H', dataIndex: '0'} );

提前谢谢你

【问题讨论】:

    标签: grid extjs4 store


    【解决方案1】:

    尝试在您的 initComponent 函数中执行任何其他操作之前添加this.callParent(arguments)。这样视图就会完全创建,您将能够访问列。

    我还建议查看reconfigure tableview 的方法来动态更改存储和列。

    更新:尝试使用 Ext.apply 而不是 columns.push:

    Ext.apply(this, {
        columns: [ list of your columns ]
    });
    

    Update2:load() 是异步的。所以你可以考虑先用虚拟列创建网格,然后加载存储并用新数据替换它。

    【讨论】:

    • 谢谢你。因为我没有在 callParent 函数之前创建任何列,所以在调用它之后,再次出现“headerCtCfg is undefined”错误。有什么解决办法吗?
    • 再次感谢您。问题是“store.on('load'...”在所有 initComponent 代码之后执行。我不知道这很复杂或这里出了什么问题...
    • 嗯... load() 是异步的。所以你可以考虑先用虚拟列创建网格,然后加载存储并用新数据替换它。
    • 仍然没有机会。对于 Ext JS 论坛中的许多人来说,这是一个真正的问题。无论如何,谢谢。如果有一天我的声誉会提高到 15,我保证会回到这里并评价你的答案。谢谢你。
    • sha,我使用了你的方法并创建了这样的虚拟列:this.columns = [] 然后在 store.load 方法中重新配置网格。请编辑您的帖子,以便我将其标记为正确答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-01-06
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2018-11-20
    相关资源
    最近更新 更多