圆圆的胖子
2009-07-28 09:43
浏览 242

动态为 TabPanle 增加一个 border 布局的 tab

我想点击菜单树后,动态为 tabpanel 的主操作区增加一个 border 布局的 tab,代码如下
[code="java"]
mainPanel.add({
id: _id,
title: node.text,
layout: 'border',
hideMode:'offsets',
autoLoad: {url: url, scripts:true}
});

mainPanel.activate(_id);
[/code]

请问我应该如何写 autoLoad 指定 url 返回的 js?而且这里不指定 center item 它还会报异常。

返回代码我这样写
[code="java"]

Ext.onReady(function() { mainPanel.getComponent(1).add(new Ext.Panel({html:'123',region:'center'})); mainPanel.getComponent(1).add(new Ext.Panel({ layout:'fit', items:{html:'456'}, height: 250, split: true, border:false, region:'north' })); alert(mainPanel.getComponent(1).id); mainPanel.getComponent(1).doLayout(); });

[/code]
是不行的。注意,因为我限定了只有两个 tab,所以 mainPanel.getComponent(1) 是能得到刚增加的 tab 的。

请大家指教一下应该如何实现我的需求,谢谢~!
[b]问题补充:[/b]
嗯,就是这个问题,已经变通了,采取 add 一个 border 布局的方式,也就是嵌套了一个 panel。都还没仔细看 API 就上马了,完了一定要仔细看看了。谢谢~!

继续问一个相关问题。

在上面的问题中,我变通为如下代码:
[code="java"]
mainPanel.getComponent(1).add(new Ext.Panel({
layout: 'border',
border: false,
items: [this.form,this.grid]
}));
mainPanel.getComponent(1).doLayout();
[/code]
mainPanel 是主布局的 center region,是一个 tabpanel。mainPanel.getComponent(1) 得到的是第二个 panel,然后上面的代码在 firefox 和 ie 下均正常。

现在,我的 grid 有个按钮,点击按钮,我新建一个 window,代码如下:
[code="java"]
new Ext.Window({
buttonAlign: 'right',
layout: 'fit',
border: false,
width: 600,
height: 300,
plain: true,
items: tabpanel,
buttons: buttons
}).show();
[/code]
tabpanel 的定义如下:
[code="java"]
new Ext.TabPanel({
activeTab: 0,
defaults: {cls: 'x-plain', layout: 'fit', border:false},
closable: true,
items:[{id:'sqb',title:'申请表',autoLoad:{url:url}}]
});
[/code]
然后 url 返回我用同样的方法,代码如下:
[code="java"]
var sqb = Ext.getCmp('sqb');
sqb.add(formPanel);
sqb.doLayout();
[/code]
上面的代码在 firefox 下正常,在 ie 下就不行,执行到 sqb.doLayout(); 就出错,请问是什么原因,我该怎么做?
[b]问题补充:[/b]
错误如下:

[img]/upload/attachment/129755/4268ec56-198b-3b72-8983-a31bdce87f14.png[/img]

[img]/upload/attachment/129757/0cf72267-8dda-3755-aedb-bbfaf64e6ae7.png[/img]

而且我在 doLayout 前 alert(typeof Ext.getCmp('sqb').doLayout); 弹出的为 function
[b]问题补充:[/b]
想做个静态的示例发上来给大家看,做好了之后,发现 ie 下也能显示了,只是编辑框不正确。然后把静态示例代码替换到项目里面去,暂时替换动态代码,也是能显示了,编辑框不对。还没发现动态代码和静态代码什么区别导致之前在 ie 下不能显示出来。

之前在 ie 下的截图
[img]/upload/attachment/129982/33e365ec-2f18-31db-b008-1b0309b666e1.jpeg[/img]
现在 firefox 下正常截图
[img]/upload/attachment/129984/d828f856-297a-3aed-a43c-82928901c3c7.png[/img]
现在 ie 下不正常截图
[img]/upload/attachment/129986/3a3d5f98-2932-3b07-807c-57351565be61.png[/img]
自己先看看再继续请教,谢谢关注的各位
[b]问题补充:[/b]
找到原因了,原来是动态返回 js 脚本的那个文件编码的问题,从 utf-8 换成 gb2312 就可以显示了。因为是改造老版本,而老版本在编码上有些混乱 :? 所以大家如果在找不到问题的时候,也可以看看是不是和我一样存在编码上的问题。现在剩下的就是让编辑框正常显示了,编码统一问题稍后...

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • zhoujuan520 2009-07-28 13:21
    已采纳

    [quote] region:'north' [/quote]

    一看到这行代码就知道你的tabpanel采用的是border布局.

    你可以仔细的去查看panel或者tabpanel的add方法的api

    动态添加和删除组件中,border布局是不被支持的.border布局中的组件是要实现定义好然后一起渲染出来的.想动态添加 东西南北的一种是不可以的.

    已采纳该答案
    打赏 评论
  • zhoujuan520 2009-07-28 17:17

    什么错

    打赏 评论
  • zhoujuan520 2009-07-29 08:57

    formPanel 的定义给我看看

    打赏 评论

相关推荐 更多相似问题