我有一个独立的html页面,其中包含一个运行得很好的dojo DataGrid。我在下面提供相关代码。
<script type="text/javascript">
var readStore, grid;
var gridLayout = [
new dojox.grid.cells.RowIndex({ name: "Row #", width: 5, styles: "text-align: left;" }),
{
name: "Name",
field: "name",
styles: "text-align:right;",
width:30
},
{
name: "Type",
field: "type",
width:20
}
];
function initGrid()
{
readStore=new dojox.data.QueryReadStore({url:"/EG3/orgUnit/getChildren", requestMethod:"get"});
console.info("readStore initialized");
grid=new dojox.grid.DataGrid({store:readStore,
id:"grid",
delayScroll:true,
structure:gridLayout,
query:{id:2},
loadingMessage:"Loading..."
}, document.createElement('div'));
dojo.byId("gridContainer").appendChild(grid.domNode);
grid.startup();
}
dojo.addOnLoad(initGrid);
</script>
</HEAD>
<BODY class="claro">
<div id="list" class="list">
Table goes here
<div id="gridContainer">
</div>
</div>
现在,当我尝试将此页面作为TabContainer中的内容窗格包含时,会出现问题。 TabContainer按原样加载页面标记,不会触发包含网格的页面的onLoad脚本。
<div dojoType="dijit.layout.TabContainer" region="center" tabStrip="true" id="orgUnitTabs">
<div dojoType="dojox.layout.ContentPane" title="Info" selected="true" id="orgInfo" jsId="orgInfo">
</div>
<div dojoType="dojox.layout.ContentPane" href="/EG3/app/orgUnit/orgUnitChildren.gsp" executeScripts="true" parseOnLoad="true" extractContent="true" title="Children" id="children" jsId="children">
Children of the selected Org
<script type="javascript" event="onLoad">
initGrid();
</script>
</div>
关于如何触发子页面的onLoad脚本的任何想法?
提前致谢。
答案 0 :(得分:1)
你应该检查param executeScripts 是否设置为 TRUE ,如果你想使用声明方法,你必须手动解析domNode,请参阅详细的dojo.parse方法:HTTP://docs.dojocampus.org/dojo/parser
答案 1 :(得分:0)
不确定答案是什么,但如果我是你,我会尝试以编程方式而不是声明性地捕获错误,使用控制台输出来查看正在发生的事情并记录加载时记录事件。