得到奇怪的错误this.grid未定义ext-all-debug.js(第47393行)

时间:2011-10-30 18:35:39

标签: extjs

我有一个编辑网格

Grid.Selection = Ext.extend(Ext.grid.EditorGridPanel, {
layout:'fit',
border:false,
stateful:false,

initComponent: function() {        

    Ext.apply(this, {
        // {{{
        store: new Ext.data.SimpleStore({
            id: 0,
            fields: [ ...],
            data: []
        })
        ,cm: new Ext.grid.ColumnModel({
            // specify any defaults for each column
            defaults: {
                sortable: true // columns are not sortable by default           
            },
            columns: [
                rowNumberer, 
                combo1,
                combo2,
                combo3,
                itemDeleter]
        })
        // }}}
        ,plugins: new Ext.ux.plugins.GridValidator()
        ,viewConfig: {forceFit: true}
        ,sm: itemDeleter
        ,height: 150
        ,frame: true
        ,clicksToEdit: 1
        ,tbar: [{
                text: 'Add New Association'
                ,id: 'addBtnGrid'
                ,iconCls: 'icon-plus'                    
                ,listeners: {
                    click: {scope: this,fn: this.addRecord,buffer: 200}
                }
            }]
    }); // eo apply       


    // call parent
          Grid.Selection.superclass.initComponent.apply(this, arguments);
} // eo function initComponent
// }}}
// {{{
,onRender: function() {
    // call parent
    Grid.Selection.superclass.onRender.apply(this, arguments);        
} // eo function onRender
// }}}
// {{{
,addRecord: function() {
    record = this.store.recordType;
    rec = new record({
        ...
    });
    this.stopEditing();
    this.store.insert(0, rec);
    **this.getView().refresh(); // GETTING ERROR ON THIS LINE**
    this.getSelectionModel().selectRow(0);
    this.startEditing(0, 0);
} // eo function addRecord    

,reset: function() {
    this.store.removeAll();
    this.addRecord();
}
}); // eo extend


// register xtype
Ext.reg('selectionGrid', Grid.Selection);

我将此网格添加到表单中。 当我显示表单时,我重置了网格,该网格从商店中删除所有记录并添加一条新记录。 但是当this.getView()。refresh();被称为我得到

this.grid未定义 this.grid.stopEditing(真); ext-all-debug.js(第47393行)

项目删除插件[http://code.google.com/p/extensive/s...eleter.js?r=13]也在调用 grid.getView()。refresh()但它可以工作。

如果有人能指导我,我将非常感激。

1 个答案:

答案 0 :(得分:3)

问题是由于在我调用getView()。refresh()之前网格没有完全渲染。

解决方案是在渲染网格后调用上面的方法。