我在BorderContainer中有一个dgrid,启用了“liveSplitters”(使用Dojo 1.8)。 dgrid很好地出现了,但是当我在左列和“前导”列(dgrid在其中)之间移动拆分器时,dgrid没有正确调整大小。但是,如果我调整窗口大小,那么dgrid会重新调整到合适的大小(即填充BorderContainer的“前导”窗格的100%)。
我在CSS中将dgrid设置为100%宽度。有什么方法我需要告诉dgrid在拆分器移动后刷新它的大小?
答案 0 :(得分:7)
看看这个例子,我写了一篇回答另一个dgrid
相关问题:http://jsfiddle.net/phusick/VjJBT/
您正在寻找的CSS规则是:
#grid {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: auto;
}
编辑:我认为这可能是dgrid
版本的问题,因此我将dgrid
更新为最新版本0.3.3并为其创建了测试你的问题:http://jsfiddle.net/phusick/5mHTS/。
嗯,这不是版本的问题,0.3.1和0.3.3都可以在调整BorderContainer
时正常工作,但仅适用于Chrome和Firefox。我在IE9和Opera 12.10中重现了这个问题:
网格需要调用grid.resize()
来正确调整大小,在调整BorderContainer
时,IE9 / Opera中不会发生这种情况,但总是在调整窗口大小时发生。
DijitRegistry
解决了这个问题,因为在调整大小时,布局组件(如BorderContainer
和ContentPane
)会在所有 dijit 子项上调用resize()
。
因此,子类DijitRegistry
或dojo/aspect
在网格的父resize
上侦听ContentPane
并调用grid::resize()
:
aspect.after(contentPane, "resize", function() {
grid.resize();
});
答案 1 :(得分:1)
正如对@phusick的回答的评论所指出的,如果我使用DijitRegistry mixin,Dgrid会正确调整大小。我也有一些其他的调整大小问题,但它们与我的css中的元素上设置相对宽度有关(例如100%)。如果我删除了ContentPanel不需要的大小,则所有元素都会调整大小。 CSS已经从Dojo 1.5继承而来,显然对于在CSS中设置了大小的ContentPanel没有做出同样的反应。