访问选项卡面板的第二个选项卡

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。谢谢

以上是关于访问选项卡面板的第二个选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个选项卡上的场景切换或弹出选项卡式应用程序中第一个选项卡的第二个场景?

如何打开相邻选项卡中的第二个链接? [复制]

如何使用 Ajax 从另一个页面操作引导选项卡

如何在仅活动选项卡上加载树

将网格面板添加到选项卡面板的第一个选项卡

WP 引导选项卡