2016-02-25 4 views
0

Я получаю неопределенные значения при доступе к строкам сетки второй вкладки tabpanel.Доступ к второй вкладке tabpanel

Я создал tabpanel со следующим кодом:

xtype: 'tabpanel', 
border: false, 
deferredRender: true, 
region: 'center', 
activeTab: 0, 
items:[{ 
     id: 'availableoperators', 
     itemId: 'ops-operators-grid', 
     xtype: 'chat.dashboard.opsmall', 
     title: 'Operators', 
     region: 'center' 
    }, { 
     id: 'availableagents', 
     itemId: 'ops-agents-grid', 
     xtype: 'chat.dashboard.opsmgrid', 
     title: 'Agents', 
     region: 'center' 
    }] 

Здесь я пытаюсь получить доступ строки 2 панели:

var opsGrid = Ext.getCmp('availableagents'); 
var records = opsGrid.store.getRange(0, opsGrid.store.getTotalCount()); 
for(var i = 0; i < records.length; i++) { 
    var row = opsGrid.getView().getRow(i); 
} 

Приведенный выше код работает отлично, только если я использую идентификатор первой вкладки. Любая помощь будет оценена по достоинству.

ответ

1

Это происходит потому, что компонент на вкладке будет отображаться при первом показе. Хранилище по умолчанию будет загружено после рендеринга сетки на этой вкладке. Таким образом, вы не сделали разметку (opsGrid.getView()) и не загружаете данные в хранилище, пока не открыли вкладку. Если вы откроете вторую вкладку и вручную запустите свой код, она должна работать нормально.

Попробуйте установить deferredRender на значение false для tabpanel или forceLayout на true для вашей второй вкладки. Это заставит рендеринг и загрузку всех вкладок (отложенныхRender: false) или только вкладку, там вы установите forceLayout.

+0

Спасибо за ваше решение. Это работает :) – ashhad

0

Я иду так же, как Selmaril. Ваше представление недоступно. Если вы хотите, вы можете переключить вкладку перед getView.

yourTabPanel.setActiveTab("availableagents"); 
yourTabPanel.doLayout(); 

Где yourTabPanel является xtype: 'tabpanel', установить его идентификатор, и вы будете в состоянии сделать:. Ext.getCmp ("yourTabPanel") setActiveTab ("availableagents");

+0

Это также полезно. Я не знал, как использовать setActivetab, пока не увижу ваш пост. благодаря – ashhad

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