访问选项卡面板的第二个选项卡
Posted
技术标签:
【中文标题】访问选项卡面板的第二个选项卡【英文标题】:Accessing 2nd tab of tabpanel 【发布时间】:2016-02-25 22:02:06 【问题描述】:在的网格行时,我得到了未定义的值。
我用以下代码创建了一个标签面板:
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'
]
我在这里尝试访问第二个面板的行:
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);
只有当我使用第一个选项卡的 id 时,上面的代码才能正常工作。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:这是因为选项卡上的组件将在第一次显示时呈现。默认情况下,将在此选项卡上呈现网格后加载存储。因此,在您打开选项卡之前,您没有渲染标记(opsGrid.getView())并且没有在存储中加载数据。如果您将打开第二个选项卡并手动运行您的代码,它应该可以正常工作。
尝试将标签面板的deferredRender 设置为 false,或者将第二个标签的 forceLayout 设置为 true。它将强制渲染和加载所有选项卡(deferredRender:false)或仅选项卡,您将在那里设置 forceLayout。
【讨论】:
【参考方案2】:我和塞尔玛瑞尔一样。您的视图无法访问。如果你愿意,你可以在getView之前切换tab。
yourTabPanel.setActiveTab("availableagents");
yourTabPanel.doLayout();
如果 yourTabPanel 是 xtype: 'tabpanel'
,请将其设置为 id,您将能够:
Ext.getCmp("yourTabPanel").setActiveTab("availableagents");
【讨论】:
这也很有帮助。在看到您的帖子之前,我不知道如何使用 setActivetab。谢谢以上是关于访问选项卡面板的第二个选项卡的主要内容,如果未能解决你的问题,请参考以下文章