将dojox.datagrid注入dijit.layout.contentpane到dijit.layout.tabcontainer的问题

时间:2009-09-18 15:50:00

标签: grid dojo

在FF中不起作用。我是否使用了grid,tabStudios,tabContainer和初创公司的正确功能顺序? tabcontainer和网格都没有被注入。有人建议解决这个问题吗?

dojo.addOnLoad(function() {
    var tabContainer=new dijit.layout.TabContainer({region:"center",id:"studio-tab"});
    var tabStudios=new dijit.layout.ContentPane({title:"Studioliste",id:"studios"});
    var readStore=new dojox.data.QueryReadStore({url:"index/studiolistdata",requestMethod:"post"});
    var grid=new dojox.grid.DataGrid({store:readStore,
                                      id:"studiolistgrid",
                                      rowsPerPage:30,
                                      delayScroll:true,
                                      structure:'.Zend_Json::encode($attr).',
                                      loadingMessage:"Loading..."
                                     });

   //problems start here

   grid.placeAt(tabStudios.containerNode);
   grid.startup();

   tabStudios.placeAt(tabContainer);
   tabStudios.startup();

   tabContainer.placeAt(dijit.byId("studio-content").containerNode);
   tabContainer.startup();

   //problems hopefully ended here
 });

     

<div id="studio-content" dojoType="dijit.layout.ContentPane" region="center">

    <ul>
      <li>XY</li>
      <li>XZ</li>
      <li>YY</li>
    </ul>

</div>

3 个答案:

答案 0 :(得分:2)

我意识到这是一年又一段时间,我不知道它是否相关,但我发现这个帖子在google搜索中排名很高,因为datagrids没有在contentPanes中加载。

这里的问题是您使用的 dijit.layout.ContentPane 不执行脚本;甚至没有警觉('测试');。

您需要使用具有executeScripts功能的 dojox.layout.ContentPane (默认情况下已启用)。

关于这个问题的解决方案真的没什么好说的,但我在博客上写道: http://www.rvdavid.com.au/contentpane-in-dojo-not-loading-scripts-this-is-how-you-fix-it/

我非常恼火,以至于我花了很长时间才找到这么简单的解决方案。

所以我在1年后发布了一个答案,以防更多的人遇到这个问题并发现自己处于这个问题上。

我希望有人觉得它很有用。

干杯。

答案 1 :(得分:0)

我找到的唯一解决方案是将ContentPane更改为BorderContainer,并将DataGrid中的TabContainer放入其中。这在Firefox和IE7中对我来说很好。

的变化:

- tabContainer.placeAt(dijit.byId("studio-content").containerNode);
+ tabContainer.placeAt(dijit.byId("studio-content"),"only");

....

-<div id="studio-content" dojoType="dijit.layout.ContentPane" region="center">
-  <ul>
-    <li>XY</li>
-    <li>XZ</li>
-    <li>YY</li>
-  </ul>
-</div>

+<div id="studio-content" dojoType="dijit.layout.BorderContainer" region="center">
+  <div dojoType="dijit.layout.ContentPane" region="center">
+    <ul>
+      <li>XY</li>
+      <li>XZ</li>
+      <li>YY</li>
+    </ul>
+  </div>
+</div>

答案 2 :(得分:0)

面对同样的问题,         就像无法在tabcontainer / contentpane中看到/加载网格一样。经过后,观察到的是网格将在加载内容窗格之前加载,所以

  1. 尝试在内容窗格加密后加载网格。
  2. 或为内容窗格提供一些默认的宽度和高度。
  3. 使用选项2并且它有效。使用如下:

    var conPane= new ContentPane({"style":width:90%;"});