我正在使用包含DataGrid对象的Widget。当Widget包含在第一个选项卡中时(这是可见选项卡),Widget工作正常,但在第二个选项卡上使用相同的代码时则不行。
代码是一样的我已经做了几次检查,以确保没有其他问题 - 非网格代码渲染正常 - 只有有问题的网格。我已经尝试手动设置高度和宽度,这只会在第二个选项卡上产生一个大的灰色矩形。
我是否需要告诉Grid以某种方式刷新 - 或者它是TabContainer的属性?
帮助 - 这让我很生气!
答案 0 :(得分:5)
是的,这对电网来说是个大问题。如果在标签容器中以明确方式使用它,它将无法在不可见的选项卡上正确呈现。它需要计算高度/宽度(即使你指定它们)......正如你所见。
我解决它的方法是在选项卡上以编程方式创建网格。我在dojo forums上发布了我的解决方案。我的代码示例已经结束github.这有点太大了,无法在此处发布。如果你想要它,请告诉我,我会编辑我的答案。
还讨论nabble使用不同的解决方案。
答案 1 :(得分:1)
“调整大小”就像一个魅力!一直在寻找这个(不知道我要搜索什么),谢谢。
我使用此例程来动态确定选项卡是否有多个数据网格,因为我可能不知道单个网格的ID,也许其他人也可能使用它:
dojo.query('div#container div[id^="gridNode_"]').forEach(function(node, index, arr) {
dijit.byId(node.id).resize();
});
这将检查带有id="container"
的div(如果要搜索整个DOM,则跳过该部分)以获取id为“gridNode_”的div,并对这些小部件应用“resize”。
答案 2 :(得分:0)
另一种方法是在选项卡元素选择时调整网格大小。示例代码
dojo.connect(dijit.byId('my_tab_container'),“selectChild”,function(child){
// if second tab (could be any...) selected
if(child.id == 'mySecondTabId'){
var myGrid = dijit.byId('myGridInsideTabId');
if(myGrid != null) myGrid.resize();
}
});