2010-10-12 42 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); 
相關問題