6

我在 GXT 中有一个网格,如下所示:

List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig config = new ColumnConfig();
config.setId("type");
config.setHeader("Type");
config.setWidth(50);
configs.add(config);
config = new ColumnConfig();
config.setId("text");
config.setHeader("Info");
config.setWidth(75);
configs.add(config);

columnModel = new ColumnModel(configs);
listStore = new ListStore<DtoModel>();

grid = new Grid<DtoModel>(listStore, columnModel);
grid.setAutoHeight(true);
grid.setAutoWidth(true);

VerticalPanel verticalPanel = new VerticalPanel();
verticalPanel.setLayout(new FillLayout());
verticalPanel.add(grid);

这会创建一个很好的网格,但有一个例外 - 宽度限制为列宽的总和。当我放弃列宽时,网格最终的宽度为 0。

有没有办法让这个网格及其列扩展以填充它可用的整个区域?

编辑:其中一个困难是该ColumnConfig.setWidth()方法只接受一个int作为参数,所以我不能将“100%”指定为字符串或类似的东西。

4

5 回答 5

7

这是这样做的方法:

grid.getView().setAutoFill(true);

这是要记住的关键点:使用 setAutoFill() 调整列大小时,gxt 将始终调整所有其他列的大小,以便网格继续适合容器。如果没有自动填充,如果您只使用 autoExpand 列,如果您调整一列的大小,网格可能会变得比包含组件更大(或更小),在这种情况下,您必须手动调整网格大小以适应 - 这不仅是痛苦,在大多数情况下,最终用户几乎是不可能的。

于 2010-11-12T13:26:53.610 回答
5

GridView 中有一个函数可以强制所有列适应可用空间。这就像为每一列设置一个 1 的 flex。

grid.getView().setForceFit(true);
于 2012-11-21T13:08:09.743 回答
3

GXT Grid 有一个名为 setAutoExpandColumn() 的方法,它将获取要占用网格中所有可用空间的列的 id。我会从网格中删除 setAutoHeight 和 setAutoWidth 。

我不确定您是否正在尝试实现固定宽度布局或灵活布局,该布局将根据浏览器的高度/宽度进行扩展。这是我通常做的,因为我希望我的网格占据所有高度和宽度并在页面上滚动。希望这可以帮助。

——文尼

    Viewport viewport = new Viewport();
    viewport.setLayout(new BorderLayout());

    ContentPanel center = new ContentPanel();
    center.setFrame(false);
    center.setLayout(new FitLayout());
    center.add(grid);
于 2010-10-14T01:16:34.777 回答
0

您可以尝试使用 css (setStyle/setColumnStyleName) 设置网格/列的样式,然后您可以使用 100% 作为宽度。

库巴科布

于 2010-10-13T06:39:33.057 回答
-1

现在可能为时已晚,但我尝试将网格的 autoHeight 和 autoWidth 属性设置为 false,并将其与设置 autoExpandColumn 结合使用(我不需要更改默认 autoFill 的值)。

grid.setAutoHeight(false);
grid.setAutoWidth(false);
于 2011-04-13T06:52:08.147 回答