使用一个按钮保存多个选项卡面板

时间:2016-01-17 18:45:48

标签: javascript extjs extjs4.2

我有三个单独的选项卡面板,每个面板都是我数据库中的一个表。我想要做的是,只需单击一个按钮,就可以同时保存数据库中所有三个选项卡的内容。我设法得到了PK" Aid"当前活动选项卡,但是当我尝试使用window.frames [" frm_B"]访问第二个非活动选项卡B并提醒结果时,我未定义。任何帮助将不胜感激。

tabPanel = Ext.create('Ext.tab.Panel', {
        region: 'center',
        activeTab: 0,
        autoScroll: true,
        tbar: [{
            xtype: 'button',
            text: 'Save',
            handler:function(){saveForm("frm_A", save);}
        }],
        items: [
                {   
                    id:"panel_A",
                    html: "<iframe src= '"+A_url +"' width='100%' height='100%' id='frm_A' name='frm_A' frameborder=0 />",
                },{
                    id:"panel_B",
                    html: "<iframe src='"+B_url+"'  width='100%' height='100%' id='frm_B' name='frm_B' frameborder=0 />",
                },{
                    id:"panel_C",
                    html: "<iframe src= '"+C_url+"' width='100%' height='100%' id='frm_C' name='frm_C' frameborder=0 />",
                }]
        });


    viewport = new Ext.Viewport({
        layout:'border',
        items:[tabPanel]
    });

    function save(record){

        var Aid = record.getKey();
        var doc =  window.frames["frm_B"];
        alert(doc);
        try {
            doc.RECORD.getField("A_ID").setRealValue(Aid);
            doc.RECORD.update(closeAndRefresh, viewExtError);

        }
        catch(e){
            showError(e);
        }

    }

1 个答案:

答案 0 :(得分:2)

我猜您的问题是当您尝试使用<iframe name='frm_B'>获取window.frames["frm_B"]时,Ext.create('Ext.tab.Panel', {});未呈现(添加到DOM)。

使用items: []创建选项卡面板时,您只需创建JS对象,而不是立即将所有.render()添加到DOM。

  

容器的子组件由该容器的布局呈现   第一次呈现Container时的管理器。

例如,当您第一次打开该标签时,会将Tabpanel标签添加到DOM。

Fiddle to illustrate it

您的问题的解决方案实际上取决于您的代码,但作为解决方法,您可以使用标签面板子面板的let mainSB : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let initialVC : UIViewController = mainSB.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.rootViewController = initialVC self.window?.makeKeyAndVisible() 方法...