Ext没有在RowModel的select事件上定义

时间:2012-12-22 01:27:28

标签: extjs extjs4.1 extjs-mvc

我有一个绑定到网格的表单,用户可以在其中创建新用户或在网格中选择一行并编辑用户。选择网格中的行应更改某些按钮可见性。无论如何,我的主要障碍是Ext似乎没有在行选择事件上完全加载。我在firebug中遇到的错误是:

TypeError: Ext.getCmp(...) is undefined

以下是我的MVC控制器的一段代码:

....
init: function() {
    this.control({
        'userlist': {
            selectionchange: this.gridSelectionChange,
            viewready: this.onViewReady,
            select: this.onRowSelect
        },
        'useredit button[action=update]': {
            click: this.updateUser
        },

        'useredit button[action=create]': {
            click: this.createUser
        }
    });
},

onRowSelect: function(model, record, index, opts) {
    // Switch to the Edit/Save button
    //console.log(model);
    Ext.getCmp('pplmgr-user-create').hide();
    Ext.getCmp('pplmgr-user-create').show();
    Ext.getCmp('id=pplmgr-user-reset').show();
},
....

是否有其他方法/事件可以完成此操作?我已经尝试过selectionchange和select事件,我也尝试过使用Ext.Component.Query,看起来Ext在这些事件中还没有。我很感激任何帮助,包括告诉我一个更好的做法来完成同样的事情。

2 个答案:

答案 0 :(得分:1)

如果您有对视图的引用,可以尝试:

myView.down('pplmgr-user-create').hide();
....
....

答案 1 :(得分:1)

Ext.getCmp将id作为其参数。你第三次调用它有id=...,“id =”部分让getCmp感到困惑,所以它返回undefined。

如果你将最后一次调用改为id,你应该没问题:

Ext.getCmp('pplmgr-user-reset').show();