我正在研究道场。我不知道如何解决这个问题。 我正在动态生成tabContainer,ContentPane,GridContainer,Portlet中的那些可用。我GirdContainer访问对象可以但我无法访问Portlet远。因为动态创建的所有东西都是字符串。我想访问对象ID,Portlet的标题和其他信息。寻求建议。
我的代码
function(data){
++gridCounter;
var cont='';
cont+='<div dojoType="dojox.layout.GridContainer" class="test" doLayout="true" id="gc'+gridCounter+'" region="center" hasResizableColumns="false" opacity="0.3" nbZones="1" allowAutoScroll="false" withHandles="true" dragHandleClass="dijitTitlePaneTitle" minChildWidth="200" minColWidth="10" style="height:50%;">';
for(var i=0;i<data.Vidgets.length;i++){
cont+='<div dojoType="dojox.widget.Portlet" title="'+data.Vidgets[i].name+'" closable="false">'+data.Vidgets[i].name+'</div>';
}
cont+='</div>';
cont+='<div dojoType="dojox.layout.GridContainer" class="test" doLayout="true" id="gc'+(++gridCounter)+'" region="center" hasResizableColumns="false" opacity="0.3" nbZones="3" allowAutoScroll="false" withHandles="true" dragHandleClass="dijitTitlePaneTitle" minChildWidth="200" minColWidth="40" style="height:50%;">';
cont+='<div dojoType="dojox.widget.Portlet" title="vidget5" closable="false">vidget5</div>';
cont+='</div>';
cont+='<div dojoType="dojox.layout.GridContainer" class="test" doLayout="true" id="gc'+(++gridCounter)+'" region="center" hasResizableColumns="false" opacity="0.3" nbZones="2" allowAutoScroll="false" withHandles="true" dragHandleClass="dijitTitlePaneTitle" minChildWidth="200" minColWidth="60" style="widht:50%;">';
cont+='<div dojoType="dojox.widget.Portlet" title="vidget6" closable="false">vidget6</div>';
cont+='</div>';
addTab(data.FormName,cont);
}
function addTab(name,cont){
var tab=new dijit.layout.ContentPane({
title:name,
id:''+name,
content:cont,
class:'tab',
closable: true,
onClose:function(){
return confirm('relly want to remove?');
}
});
dijit.byId('tabContainer').addChild(tab);
}
当我编写代码时,我可以访问GridContainer对象。
var tabs=registry.byId("tabContainer");
var cPane=tabs.get("selectedChildWidget");
var grid=cPane.getChildren()[0];->access to GridContainer
但我无法访问Portlet对象,因为它是字符串(innerHTML) 我想aceess到Portlet对象。请帮助我!
答案 0 :(得分:0)
就像任何布局小部件一样,dojox/layout/GridContainer
也有方法getChildren()
。因此,如果您可以访问GridContainer
,则可以再次使用getChildren()
方法检索该窗口小部件的子项(这些是portlet)。
例如:
var tabs = registry.byId("tabContainer");
var cPane = tabs.get("selectedChildWidget");
var grid = cPane.getChildren()[0]; // Access to GridContainer
var portlets = grid.getChildren(); // Returns an array of all portlets
// inside the GridContainer