Проблема внедрения dojox.datagrid в dijit.layout.contentpane в dijit.layout.tabcontainer - PullRequest
1 голос
/ 18 сентября 2009

не работал в FF. Я использовал правильный порядок функций grid, tabStudios, 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 ]

2 голосов
/ 16 декабря 2010

Я понимаю, что это год и немного назад, и я не знаю, связано ли это, но я обнаружил, что эта тема занимает высокое место в поиске в Google по поводу данных, не загружаемых в контент-панели.

Проблема заключается в том, что вы использовали dijit.layout.ContentPane , который не выполняет сценарии; даже не предупрежден («тест»);.

Вам необходимо использовать dojox.layout.ContentPane , который имеет функцию executeScripts (и включена по умолчанию).

На самом деле больше нечего сказать о решении этой проблемы, но я написал об этом в блоге: http://www.rvdavid.com.au/contentpane-in-dojo-not-loading-scripts-this-is-how-you-fix-it/

Меня это так раздражало, что мне понадобилось так много времени, чтобы найти такое простое решение.

Итак, я выкладываю ответ здесь, 1 год спустя, на случай, если больше людей столкнутся с этой проблемой и окажутся на этом ТАКОМ вопросе.

Надеюсь, кто-то найдет это полезным.

Приветствие.

0 голосов
/ 14 октября 2015

Столкнулся с той же проблемой, например, не может видеть / загружать сетку внутри tabcontainer / contentpane. После прохождения, то, что наблюдалось, будет загружено сеткой перед загрузкой панели содержимого, поэтому

  1. попробуйте загрузить сетку после загрузки панели содержимого.
  2. или укажите ширину и высоту по умолчанию для панели содержимого.

Использовал вариант 2, и он работал. Используется как показано ниже:

var conPane= new ContentPane({"style":width:90%;"});
0 голосов
/ 19 сентября 2009

Единственное решение, которое я нашел, состояло в том, чтобы изменить ContentPane на BorderContainer и поместить в него мой TabContainer в DataGrid. Это прекрасно работает для меня в 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>
...