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 再点击 关闭按钮就是正确的,请问有没有人给点解决方案啊!
大家不要这么沉默,在线等待...急啊!!
...全文
1440 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,997

社区成员

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

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