我在标题窗格中有一个dojo增强的网格,它在Tabcontainer中插入。我正在动态创建一个选项卡容器,并绘制包含网格的标题窗格。这是第一次正确绘制网格,但如果我关闭选项卡并再次尝试打开选项卡,则会绘制容器标题窗格,但标题窗格内的网格不会绘制(或者更确切地说,它不可见),直到我调整浏览器大小。那么有人面临过类似的问题吗?请让我知道这个问题的解决方案。我尝试过resize()、update()&网格上的startup()方法没有成功。
我有点困了,请分享你对此的想法。
谢谢,Vikram
我遇到了同样的问题,并通过执行dojo连接找到了一个解决方法,如:
dojo.connect(Datagrid,"_onFetchComplete",DataGrid,"_resize");
因此,当DataGrid完成加载数据时,它应该自动调整大小。
希望我能帮忙。
你好,Simon
您尝试过在网格上设置绝对高度吗?你试过哪些浏览器?(我在使用IE的TabCointainer中遇到了各种DataGrid问题)
每次容器大小发生变化时,都必须调用TabContainer.layout()
。为了做到这一点,您可以1)在包含DOMNode的情况下监视DOMEvents onunderflow和onoverflow,或者2)当容器变为可见时(一次性)。
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);
}
我的问题
我遇到了与你类似的情况:
- 网格位于标题窗格中(默认情况下为关闭状态)
- 网格可以在飞行中被破坏和重新创建
- 当用户:
- 打开窗格
- 关闭窗格
- 重新创建网格
- 重新打开窗格
- 在调整浏览器窗口大小之前,网格不可见
我的解决方案
我的方法是,每当打开标题窗格时,都在网格上强制使用resize()
。我在一个可以访问网格和窗格的地方使用了这样的代码:
var titlePane = registry.byId("title-pane-id");
var handle = aspect.after(titlePane, "toggle", function(deferred) {
if (titlePane.open) {
grid.resize();
}
});
- dojo/方面文档
- 如果你破坏了它,不要忘记从你的网格中删除它
- 我是在dojo v1.8.1上做的
我的解决方案太简单了:在网格声明中定义粗体参数,写在这里:
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'));
这一切都解决了!享受
style="height: auto;"
符合目的。