我在标题窗格中有一个dojo增强网格,它位于Tabcontainer中。我正在动态创建一个选项卡容器并绘制包含网格的标题窗格。第一次正确绘制网格,但如果我关闭选项卡并再次尝试打开tabcontainer标题窗格,但是标题窗格内的网格未绘制(或者更确切地说是不可见),直到我进行浏览器调整大小。 那么任何人都遇到过类似的问题吗?请让我知道解决方案。 我试过resize(),update()&网格上的startup()方法没有成功。
我有点被困,请分享你对此的想法。
谢谢, 维克拉姆
答案 0 :(得分:1)
我遇到了同样的问题,并通过dojo连接找到了解决方法:
dojo.connect(Datagrid,"_onFetchComplete",DataGrid,"_resize");
因此,当DataGrid完成加载数据时,它应自动调整大小。
希望我能提供帮助。
问候,西蒙
答案 1 :(得分:0)
您是否尝试在网格上设置绝对高度? 您尝试过哪些浏览器? (我在使用IE的TabContainer中遇到了DataGrid的各种问题)
答案 2 :(得分:0)
每次容器更改大小时,您必须调用TabContainer.layout()
。为此,您可以1)监视包含DOMNode的onunderflow和onoverflow上的DOMEvents,或者2)当容器变为可见时(一次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);
}
答案 3 :(得分:0)
我的类似情况与你的相似:
我的方法是每当打开标题窗格时强制resize()
在我的网格上。
我使用了这样的代码,在我可以访问网格和窗格的地方:
var titlePane = registry.byId("title-pane-id");
var handle = aspect.after(titlePane, "toggle", function(deferred) {
if (titlePane.open) {
grid.resize();
}
});
答案 4 :(得分: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'));
这一切都解决了! 享受!
答案 5 :(得分:0)
style="height: auto;"
符合目的。