Dojo ..无法在contentpane中执行javascript

时间:2010-10-24 23:26:27

标签: datagrid dojo

我有一个独立的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脚本的任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:1)

你应该检查param executeScripts 是否设置为 TRUE ,如果你想使用声明方法,你必须手动解析domNode,请参阅详细的dojo.parse方法:HTTP://docs.dojocampus.org/dojo/parser

答案 1 :(得分:0)

不确定答案是什么,但如果我是你,我会尝试以编程方式而不是声明性地捕获错误,使用控制台输出来查看正在发生的事情并记录加载时记录事件。