Ext portal例子动态添加panel问题,在线等待

PrinceSuperman 2009-12-01 05:02:52
portal 这个例子中items里的panel都是静态的,我通过动态的 生成panel后发现生成出来的panel里的按钮tools没有作用了,
而且我动态生成多个panel 后进行拖动,发现panel会跟着跑动,我用的版本是ext-2.3.0,
以下是我的sample 的代码 其他的几个文件都没有动,请高手帮我看下!

现在问题是
点击新建的panel右上角的关闭按钮式总是提示 panel.ownerCt is undefined

给我感觉是没有激活此panel 因为只要拖动此panel 再点击 关闭按钮就是正确的,请问有没有人给点解决方案啊!
大家不要这么沉默,在线等待...急啊!!
...全文
1432 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mcg521 2010-03-19
  • 打赏
  • 举报
回复
使用中,学习。
BriskJJ 2010-03-09
  • 打赏
  • 举报
回复
589966..................
luoyanxue 2009-12-30
  • 打赏
  • 举报
回复
PrinceSuperman 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 a248569780 的回复:]
问题出在父类容器没有添加panel

有如下代码你参考下,在Ext环境下就可运行
注意portalColumn.add("dynamicpanel");
这句话

Ext.onReady(function(){
var portalColumnId = "row";
var col = 4;
    var tools = [{
        id:'gear',
        handler: function(){
            Ext.Msg.alert('Message', 'The Settings tool was clicked.');
        }
    },{
        id:'close',
        handler: function(e, target, panel){
            panel.ownerCt.remove(panel, true);
        }
    }];

    var viewport = new Ext.Viewport({
    id:'vport',
        layout:'border',
        items:[{
        id:'pp',
            xtype:'portal',
            region:'center',
            margins:'35 5 5 0'           
        }]
    });
   
    for (var j = 0; j < 1; j++) {
    var portalColumn = new Ext.ux.PortalColumn({
id : portalColumnId + j,
xtpye:'portalColumn',
columnWidth : 0.5,
style : 'padding:2px 2px 2px 2px',
items:[{
id:'staticpanel',
                    title: 'Panel 2',
                    tools: tools,
                    width: 180,
                    height:180,
                    html: "staticpanel静态"
                }]
});
Ext.getCmp("pp").add(portalColumn);
viewport.doLayout();
var newpanel = new Ext.Panel({
id:'dynamicpanel',
title: 'Panel 2',
renderTo:portalColumnId + j,
draggable:true,
            tools: tools,
autoWidth:true,
            collapsible:true,
            width: 180,
            height:180,
            html: "dynamicpanel动态"
});
newpanel.doLayout();

portalColumn.add("dynamicpanel");

alert(Ext.getCmp("staticpanel").ownerCt);
alert(Ext.getCmp("dynamicpanel").ownerCt);
    }   
});


[/Quote]


十分感谢 指点! 多谢指教!
diygwcom 2009-12-20
  • 打赏
  • 举报
回复
panel都不属于树对象 你肯定找不到他的ownerct了
a248569780 2009-12-10
  • 打赏
  • 举报
回复
问题出在父类容器没有添加panel

有如下代码你参考下,在Ext环境下就可运行
注意portalColumn.add("dynamicpanel");
这句话

Ext.onReady(function(){
var portalColumnId = "row";
var col = 4;
var tools = [{
id:'gear',
handler: function(){
Ext.Msg.alert('Message', 'The Settings tool was clicked.');
}
},{
id:'close',
handler: function(e, target, panel){
panel.ownerCt.remove(panel, true);
}
}];

var viewport = new Ext.Viewport({
id:'vport',
layout:'border',
items:[{
id:'pp',
xtype:'portal',
region:'center',
margins:'35 5 5 0'
}]
});

for (var j = 0; j < 1; j++) {
var portalColumn = new Ext.ux.PortalColumn({
id : portalColumnId + j,
xtpye:'portalColumn',
columnWidth : 0.5,
style : 'padding:2px 2px 2px 2px',
items:[{
id:'staticpanel',
title: 'Panel 2',
tools: tools,
width: 180,
height:180,
html: "staticpanel静态"
}]
});
Ext.getCmp("pp").add(portalColumn);
viewport.doLayout();
var newpanel = new Ext.Panel({
id:'dynamicpanel',
title: 'Panel 2',
renderTo:portalColumnId + j,
draggable:true,
tools: tools,
autoWidth:true,
collapsible:true,
width: 180,
height:180,
html: "dynamicpanel动态"
});
newpanel.doLayout();

portalColumn.add("dynamicpanel");

alert(Ext.getCmp("staticpanel").ownerCt);
alert(Ext.getCmp("dynamicpanel").ownerCt);
}
});

licip 2009-12-03
  • 打赏
  • 举报
回复
你的代码在IE上好像跑不了呀。
PrinceSuperman 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaojing7 的回复:]
http://www.javaeye.com/problems/15476
[/Quote]


谢谢了,我的可以渲染出来 也可以拖动,问题是 点击删除按钮时报
panel.ownerCt is undefined 为空,如果我拖动此panel再点击关闭按钮 就可以! 不知道为什么,不知道各位能不能给个解释
PrinceSuperman 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 licip 的回复:]
你的代码在IE上好像跑不了呀。
[/Quote]

再IE7 和 Firefox 可以跑
你可以试下
xiaojing7 2009-12-02
  • 打赏
  • 举报
回复
http://www.javaeye.com/problems/15476
PrinceSuperman 2009-12-02
  • 打赏
  • 举报
回复
怎么 没人回答!!
PrinceSuperman 2009-12-02
  • 打赏
  • 举报
回复
终于有人做声了!!!感动
dulei19900815dulei 2009-12-02
  • 打赏
  • 举报
回复
大家说话看看啊
PrinceSuperman 2009-12-01
  • 打赏
  • 举报
回复
顶........
PrinceSuperman 2009-12-01
  • 打赏
  • 举报
回复
Ext.onReady(function(){
Ext.override(Ext.Element,{ //加此句防止在firefox下报错
contains : function(el){
try {
return !el ? false : Ext.lib.Dom.isAncestor(this.dom, el.dom ? el.dom : el);
} catch(e) {
return false;
}
}
});
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
var tools = [{
id:'gear',
handler: function(){
}
},{
id:'close',
handler: function(e, target, panel){
panel.ownerCt.remove(panel, true);
}
}];

var root = new Ext.tree.TreeNode({
text: '文件夹一',
allowDrag:true,
allowDrop:true
});
root.appendChild(new Ext.tree.TreeNode({text:'条目一',allowDrag:true}));
root.appendChild(new Ext.tree.TreeNode({text:'条目二',allowDrag:true}));
root.appendChild(new Ext.tree.TreeNode({text:'条目三',allowDrag:true}));
root.appendChild(new Ext.tree.TreeNode({text:'条目四',allowDrag:true}));
root.appendChild(new Ext.tree.TreeNode({text:'条目五',allowDrag:true}));
root.appendChild(new Ext.tree.TreeNode({text:'条目六',allowDrag:true}));
root.appendChild(new Ext.tree.TreeNode({text:'条目七',allowDrag:true}));
root.appendChild(new Ext.tree.TreeNode({text:'条目八',allowDrag:true}));

var tree=new Ext.tree.TreePanel({
title:'列表',
region:'west',
// split:true,
onlyLeafCheckable:false,
animate:false,//是否动画
enableDD:true,// 是否支持拖放
height: 760,
width: 198,
minSize: 175,
maxSize: 400,
// collapsible: true,
margins:'0 0 0 0',
root:root
});

tree.on('click', function(node){
if(!Ext.get(node.id)){
var itemsPanel = new Ext.Panel({
xtype:'portal',
id:node.id,
title : node.text,
anchor : '100%',
frame : true,
collapsible : true,
draggable : true,
tools:[{
id:'help',
handler: function(){
}
},{
id:'close',
handler: function(e, target, itemsPanel){
panel.ownerCt.remove(Ext.getCmp(node.id), true);
}
}],

cls : 'x-portlet'
});
addItems(itemsPanel);
}else{
Ext.Msg.alert("此节点已存在");
}
});

var addItems=function(itemsPanel){ //给指定的items控件添加指定的items
var items1=Ext.getCmp('items1').items.length;
var items2=Ext.getCmp('items2').items.length;
var items3=Ext.getCmp('items3').items.length;
var imin=Math.min(items1,items2,items3);
if(items1==imin){
Ext.getCmp('items1').items.add(itemsPanel);
Ext.getCmp('items1').doLayout(true);
}
else if(items2==imin){
Ext.getCmp('items2').items.add(itemsPanel);
Ext.getCmp('items2').doLayout(true);
}
else if(items3==imin){
Ext.getCmp('items3').items.add(itemsPanel);
Ext.getCmp('items3').doLayout(true);
}
}

var viewport = new Ext.Viewport({
layout:'border',
id:'view1',
items:[{
region:'west',
id:'west-panel',
// split:true,
width: 200,
collapsible: true,
minSize: 175,
maxSize: 400,
margins:'35 0 5 5',
cmargins:'35 5 5 5',
layout:'accordion',
layoutConfig:{
animate:true
},
items: tree
},{
xtype:'portal',
id:'center_items',
region:'center',
margins:'35 5 5 0',
items:[{
id:'items1',
columnWidth:.33,
style:'padding:10px 0 10px 10px',
items:[
// {
// title: 'Grid in a Portlet',
// layout:'fit',
// tools: tools,
// items: new SampleGrid([0, 2, 3])
// },
// {
// title: 'Another Panel 1',
// tools: tools
// html: Ext.example.shortBogusMarkup
// }
]
},{
id:'items2',
columnWidth:.33,
style:'padding:10px 0 10px 10px',
items:[
// {
// title: 'Panel 2',
// tools: tools
// // html: Ext.example.shortBogusMarkup
// },{
// title: 'Another Panel 2',
// tools: tools
// // html: Ext.example.shortBogusMarkup
// }
]
},{
id:'items3',
columnWidth:.33,
style:'padding:10px',
items:[
// {
// title: 'Panel 3',
// tools: tools
// html: Ext.example.shortBogusMarkup
// },{
// title: 'Another Panel 3',
// tools: tools
// },
// {
// title: 'Another Panel 4',
// tools: tools
// html: Ext.example.shortBogusMarkup
// }
]
}]
}]
});
});

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧