2012-01-15 5 views
1

В конструкторе я поставил свое имя сетки равного 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 изнутри сетки.

EDIT:

Я только заметил, что это не вызывается внутри сетчатой ​​панели с магазином, но какой-то другой панелью. То, что вам нужно сделать, это установить конфигурацию id на панели сетки. Например. id: MyGridPanel Возможно, на нем уже установлен набор идентификаторов, и вам просто нужно выяснить, что это такое. Если вы используете конструктор ExtJS, то может на самом деле уже установлен в «MyGridPanel». Тогда вы могли бы назвать его следующим образом:

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

тогда вы могли бы сделать:

grid.getStore().getRange() 
+0

Большое вам спасибо, я действительно застрял там – BAR

0

попытка изменения button.on('click', me.onSubmitBtnClick, me) к button.on('click', Ext.bind(me.onSubmitBtnClick, me), me)

Это выглядит как вопрос области действия, в методе onSubmitBtn(), this вероятно, отсылая к неправильному объекта (например, окно или кнопка), а не объект сетки, который вы хотите.

+0

сделал правку, но она работает и не в такой же. Я не думаю, что это ошибка с кнопкой, просто хотелось показать идею события. – BAR

+0

Chrome Javascript Debugger Console -> Uncaught ReferenceError: сетка не определена – BAR

+0

Я также вижу, что вы расширяете MyApp.view.ui.MyPanel? это расширяет GridPanel? Вероятно, нужно просто поставить инструкцию отладчика перед this.addRecord в onSubmitBtnClick, просто чтобы понять, что это значит, и кроме того у меня нет других предложений. Извините, что я долгое время работал с какой-либо работой ExtJS. – Dzhu

Смежные вопросы