1

我在标题窗格中有一个道场增强网格,该网格又在 Tabcontainer 中。我正在动态创建一个选项卡容器并绘制包含网格的标题窗格。第一次正确绘制网格,但是如果我关闭选项卡并再次尝试打开 tabcontainer 标题窗格已绘制但标题窗格内的网格未绘制(或者更确切地说它不可见),直到我调整浏览器大小。那么有人遇到过类似的问题吗?请让我知道解决方案。我在网格上尝试了 resize()、update() 和 startup() 方法,但没有成功。

我有点卡住了,请分享您对此的想法。

谢谢,维克拉姆

4

6 回答 6

1

我遇到了同样的问题,并通过执行 dojo 连接找到了解决方法,例如:

dojo.connect(Datagrid,"_onFetchComplete",DataGrid,"_resize");

因此,当 DataGrid 完成加载数据时,它应该自动调整大小。

希望我能帮上忙。

问候,西蒙

于 2012-07-26T08:41:41.180 回答
0

我的解决方案太简单了:在网格声明中定义粗体参数写在这里:

grid = new EnhancedGrid({id: 'MyIDgrid',
store: dataStore = new ObjectStore({objectStore: myStore}),
        structure: structureGrid,
        plugins: pluginGrid,
        style : 'width: 725px; height: 350px',
        autoWidth : true,
**autoHeight : false,height:'200px',**
        elasticView : '2'
}, document.createElement('div'));

这一切都解决了!享受!

于 2014-04-13T23:15:23.743 回答
0

TabContainer.layout()每次其容器更改大小时,您都必须调用。为此,您可以 1) 在包含 DOMNode 或 2) 容器变得可见时监视 DOMEvents onunderflow 和 onoverflow (once-n-forall)。

window.onresize 事件修复它的原因是 TabContainer 挂钩所述事件并调用其自己的布局。

在您的情况下,TabController 摆弄 TabContainer 的窗格,可能在某处缺少“layoutChildren”。最佳情况下,您应该将网格作为唯一子选项卡上的第一个。

部署网格后,它将采用绝对的计算高度 - 从 TabContainer '继承'。一旦 TabContainer 选择调整大小或指示这样做,就会触发此事件。

手动,您应该能够实现这些行 - 在重新打开选项卡后。脚本取自_Grid.js来说明

var grid = dijit.byId('MYGRIDID');
require(["dijit/layout/utils"], function(layerUtils) {
   layoutUtils.layoutChildren(grid.domNode,
               grid._contentBox, 
              [grid.tablist, {
                  domNode: grid.tablistSpacer,
                  layoutAlign: titleAlign
              }, {
                  domNode: grid.containerNode,
                  layoutAlign: "client"
              }]);
   grid._containerContentBox = layoutUtils.marginBox2contentBox(grid.containerNode,
              {
                  domNode: grid.containerNode,
                  layoutAlign: "client"
              });
   // note this line in particular
   grid.selectedChildWidget.resize(grid._containerContentBox);
}
于 2012-08-01T22:00:17.910 回答
0

您是否尝试过在 Grid 上设置绝对高度?您尝试过哪些浏览器?(我在使用 IE 的 TabCointainer 中遇到了 DataGrid 的各种问题)

于 2012-07-30T07:36:55.733 回答
0

我的问题

我遇到了和你类似的情况:

  • 网格位于标题窗格中(默认关闭)。
  • 网格可以在运行中被销毁和重新创建。
  • 当用户出现问题时:
    1. 打开窗格。
    2. 关闭窗格。
    3. 重新创建网格。
    4. 重新打开窗格。
    5. 网格不可见,直到调整浏览器窗口的大小!

我的解决方案

resize()我的方法是在打开标题窗格时在我的网格上强制 a 。我在可以访问网格和窗格的地方使用了这样的代码:

var titlePane = registry.byId("title-pane-id");
var handle = aspect.after(titlePane, "toggle", function(deferred) {
    if (titlePane.open) {
        grid.resize();
    }
});
于 2012-11-23T22:59:53.023 回答
0

style="height: auto;"将符合目的。

于 2015-04-27T10:11:43.060 回答