2010-10-12 72 views
6

我在GXT一格,是这样的:如何让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); 

这就造成了电网只是一个exception--宽度被限制在列宽度之和罚款。当我放弃列宽度时,网格结束为0宽度。

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

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

回答

7

这是为了做到这一点:

grid.getView().setAutoFill(true); 

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

+0

这是我终于找到的解决方案。非常感谢! – Cuga 2010-12-01 20:53:47

0

你可以尝试使用css(setStyle/setColumnStyleName)来设计网格/列的样式,然后你可以使用100%的宽度。

cupakob

+0

我试过了你的建议,但没有区别。即使我指定了setStyle(“width:100%”),并且如果我同时指定了它,它仍然只显示为无,除非提供了整数宽度/高度值,它仍然只显示为指定的整数宽度。 – Cuga 2010-10-13 15:02:24

+0

setStyle(“width:100%”)将不起作用,这里您必须从样式表中指定样式名称...例如:setStyle(“myGridWidth”)和“myGridWidth”在* .css中定义如下: .myGridWidth {width:100%} – cupakob 2010-10-13 17:22:18

3

的GXT电网有一个名为setAutoExpandColumn()的方法,将带您要占用您的网格中的所有可用空间列的ID。我会从网格中移除setAutoHeight和setAutoWidth。

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

--Vinny

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

    ContentPanel center = new ContentPanel(); 
    center.setFrame(false); 
    center.setLayout(new FitLayout()); 
    center.add(grid); 
+0

这还将确保在调整窗口大小或最小化网格面积时(例如当它是视口的一部分时),您的列“填充”网格(或缩小,如果需要)。谢谢:-) +1 – 2011-11-01 10:12:11

-1

现在可能已经太迟了,但我试图将网格的autoHeight和autoWidth属性设置为false,并将其与autoExpandColumn设置结合使用(我不需要更改默认的自动填充值)。

grid.setAutoHeight(false); 
grid.setAutoWidth(false); 
5

在GridView中有一个函数强制所有列都适合可用空间。这就像为每列设置1的弯曲。

grid.getView().setForceFit(true); 
相关问题