2012-01-15 55 views
1

在Designer中设置我的网名相同MyGridExtJS的如何获得网格

在点击按钮的addRecord叫,其中行被attemting获取未定义的网格失败。

如何定义此MyGrid以便它引用面板中的网格?

Ext.define('MyApp.view.MyPanel', { 
    extend: 'MyApp.view.ui.MyPanel', 

    initComponent: function() { 
     var me = this; 
     me.callParent(arguments); 

     var button = me.down('button[text=Submit]'); 

     button.on('click', me.onSubmitBtnClick, me); 
    }, 

    addRecord: function(myRecordArray) { 

     var rows = grid.getStore().getRange(); // ERROR happens here 

      console.log(rows); 


    }, 

    onSubmitBtnClick: function() { 
     this.addRecord(["ll", "kk", "mm"]); 
    } 
}); 

Chrome的JavaScript调试器控制台 - >

Uncaught ReferenceError: grid is not defined 

回答

6

在您拨打grid.getStore()之前,您需要定义“网格”。您可以在调用之前执行var grid = this;,因为您正在从网格内部定义addRecord函数。

编辑:

我只是注意到,这不是正在从与商店,但其它一些面板网格面板内部调用。你需要做的是在你的网格面板上设置一个ID配置。例如。 id: MyGridPanel可能已经有一个id配置设置它,你只需要找出它是什么。如果您使用的是ExtJS设计器,那么可能实际上已经将设置为“MyGridPanel”。您需要调用它像这样:

var grid = Ext.getCmp("MyGridPanel"); 

然后你会怎么做:

grid.getStore().getRange() 
+0

非常感谢你,我真的被卡在那里 – BAR 2012-01-15 04:39:21

0

尝试改变button.on('click', me.onSubmitBtnClick, me)button.on('click', Ext.bind(me.onSubmitBtnClick, me), me)

这看起来像一个范围问题,在您的onSubmitBtn()方法,this大概指的错了对象(例如,窗口或按钮),而不是网格对象,这就是你想要的。

+0

所作的修改,但它是工作和失败一样。我不相信这是按钮的错误,只是想展示一个事件的想法。 – BAR 2012-01-15 00:14:30

+0

Chrome Javascript调试器控制台 - >未捕获ReferenceError:未定义网格 – BAR 2012-01-15 00:15:59

+0

我也看到你扩展MyApp.view.ui.MyPanel?这是否扩展GridPanel?大概应该在onSubmitBtnClick中的this.addRecord之前放置调试器语句,只是为了看看这是指什么,除此之外,我没有任何其他建议 - 抱歉,自从我执行任何ExtJS工作以来,这已经很长时间了。 – Dzhu 2012-01-15 00:21:23