一键保存多个标签面板
Saving several tab panels with one button
我有三个单独的选项卡面板,每个面板都是我数据库中的一个 table。我想做的是点击一个按钮,同时将所有三个选项卡的内容保存在数据库中。我设法获得了当前活动选项卡的 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);
}
}
我猜你的问题是当你试图用 window.frames["frm_B"]
.
获取它时,你的 <iframe name='frm_B'>
没有被渲染(添加到 DOM)
当您使用 Ext.create('Ext.tab.Panel', {});
创建选项卡面板时,您只是创建了 JS 对象,并不是它的所有 items: []
立即添加到 DOM。
A Container's child Components are rendered by that Container's layout
manager when the Container is first rendered.
例如,当您第一次打开该选项卡时,DOM 添加了选项卡面板选项卡。
您的问题的解决方案实际上取决于您的代码,但作为解决方法,您可以使用选项卡面板子面板的 .render()
方法...
我有三个单独的选项卡面板,每个面板都是我数据库中的一个 table。我想做的是点击一个按钮,同时将所有三个选项卡的内容保存在数据库中。我设法获得了当前活动选项卡的 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);
}
}
我猜你的问题是当你试图用 window.frames["frm_B"]
.
<iframe name='frm_B'>
没有被渲染(添加到 DOM)
当您使用 Ext.create('Ext.tab.Panel', {});
创建选项卡面板时,您只是创建了 JS 对象,并不是它的所有 items: []
立即添加到 DOM。
A Container's child Components are rendered by that Container's layout manager when the Container is first rendered.
例如,当您第一次打开该选项卡时,DOM 添加了选项卡面板选项卡。
您的问题的解决方案实际上取决于您的代码,但作为解决方法,您可以使用选项卡面板子面板的 .render()
方法...