4

我在启用了“liveSplitters”的 BorderContainer 中有一个 dgrid(使用 Dojo 1.8)。dgrid 很好地出现,但是当我在左列和“前导”列(dgrid 位于其中)之间移动拆分器时,dgrid 无法正确调整大小。但是,如果我稍微调整窗口大小,则 dgrid 会重新调整为适当的大小(即填充 BorderContainer 的“前导”窗格的 100%)。

我在 CSS 中将 dgrid 设置为 100% 宽度。有什么方法我需要告诉 dgrid 在拆分器移动后刷新它的大小?

4

2 回答 2

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()才能正确调整大小,这在 IE9/Opera 中不会在调整大小时BorderContainer发生,但在调整窗口大小时总是会发生。

DijitRegistry解决了这个问题,因为布局组件,比如BorderContainerand ContentPane,在调整大小时会调用resize()它们的所有dijit子级。

因此,无论是子类DijitRegistry还是在网格的父级上dojo/aspect侦听并调用:resizeContentPanegrid::resize()

aspect.after(contentPane, "resize", function() {
    grid.resize();
});
于 2012-11-18T00:35:22.427 回答
1

正如@phusick 回答的评论中所指出的,如果我使用 DijitRegistry mixin,Dgrid 会正确调整大小。我也遇到了其他一些调整大小的问题,但它们与我的 CSS 中的元素设置相对宽度有关(例如 100%)。如果我删除了 ContentPanel 不需要的大小,所有元素都会调整大小。CSS 是从 Dojo 1.5 继承而来的,显然它对在 CSS 中设置了大小的 ContentPanel 的反应方式不同。

于 2012-11-18T04:00:35.953 回答