我在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);
Run Code Online (Sandbox Code Playgroud)
这样就可以创建网格,只有一个例外 - 宽度限制为列宽的总和.当我放弃列宽时,网格最终有0宽度.
有没有办法让这个网格及其列扩展以填充可用的整个区域?
编辑:困难之一是该ColumnConfig.setWidth()方法只接受int一个参数,所以我不能将"100%"指定为字符串或类似的东西.
这是这样做的方法:
grid.getView().setAutoFill(true);
Run Code Online (Sandbox Code Playgroud)
这是一个要记住的关键点:使用setAutoFill()调整列的大小时,gxt将始终调整所有其他列的大小,以便网格继续适合容器.如果没有自动填充,如果您只使用autoExpand列,如果您调整一列的大小,网格可能会比包含组件更大(或更小),在这种情况下,您必须手动调整网格大小以适应 - 这不仅是痛苦,在大多数情况下,最终用户几乎不可能.
小智 5
GridView中有一个强制所有列适合可用空间的函数.这就像为每列设置1的flex.
grid.getView().setForceFit(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12677 次 |
| 最近记录: |