我在标题窗格中有一个道场增强网格,该网格又在 Tabcontainer 中。我正在动态创建一个选项卡容器并绘制包含网格的标题窗格。第一次正确绘制网格,但是如果我关闭选项卡并再次尝试打开 tabcontainer 标题窗格已绘制但标题窗格内的网格未绘制(或者更确切地说它不可见),直到我调整浏览器大小。那么有人遇到过类似的问题吗?请让我知道解决方案。我在网格上尝试了 resize()、update() 和 startup() 方法,但没有成功。
我有点卡住了,请分享您对此的想法。
谢谢,维克拉姆
我在标题窗格中有一个道场增强网格,该网格又在 Tabcontainer 中。我正在动态创建一个选项卡容器并绘制包含网格的标题窗格。第一次正确绘制网格,但是如果我关闭选项卡并再次尝试打开 tabcontainer 标题窗格已绘制但标题窗格内的网格未绘制(或者更确切地说它不可见),直到我调整浏览器大小。那么有人遇到过类似的问题吗?请让我知道解决方案。我在网格上尝试了 resize()、update() 和 startup() 方法,但没有成功。
我有点卡住了,请分享您对此的想法。
谢谢,维克拉姆
我遇到了同样的问题,并通过执行 dojo 连接找到了解决方法,例如:
dojo.connect(Datagrid,"_onFetchComplete",DataGrid,"_resize");
因此,当 DataGrid 完成加载数据时,它应该自动调整大小。
希望我能帮上忙。
问候,西蒙
我的解决方案太简单了:在网格声明中定义粗体参数写在这里:
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'));
这一切都解决了!享受!
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);
}
您是否尝试过在 Grid 上设置绝对高度?您尝试过哪些浏览器?(我在使用 IE 的 TabCointainer 中遇到了 DataGrid 的各种问题)
我遇到了和你类似的情况:
resize()我的方法是在打开标题窗格时在我的网格上强制 a 。我在可以访问网格和窗格的地方使用了这样的代码:
var titlePane = registry.byId("title-pane-id");
var handle = aspect.after(titlePane, "toggle", function(deferred) {
if (titlePane.open) {
grid.resize();
}
});
style="height: auto;"将符合目的。