2010-11-16 39 views
0

我有一個Flex 4中,MX:數據網格與設置以下(相關)屬性:Flex DataGrid列寬:一列來統治它們全部?

width="100%" 
horizontalScrollPolicy="off" 

我對所有DataGridColumnsminWidth集合和寬度上它們中的一個設置。如果我只是最大化/最小化應用程序的顯示器(在瀏覽器或獨立的Flash播放器中),那麼列可以很好地放大和縮小。但是,如果您抓住應用程序的邊緣並拖動它以使其變大,則只有一列變得非常大。當再次拖動尺寸時,一列仍然是大,但是其他所有列都變小了。

這是Flex DataGrid中的一個錯誤,還是我錯過了要設置的關鍵屬性(或datagrid列上的屬性),以便在拖動放大應用程序時使所有列成長和縮小?

回答

1

這是一個令人不快的異常,如果不是真正的bug,就像Flex做datagrids一樣。在Adobe的防守中,弄清楚如何調整所有列的大小似乎並不是一件容易的事情。

我一直處理這個問題的方法是在最後製作一個虛擬列,最小寬度爲4,沒有寬度規格。然後,這變成了「可擴展的專欄」,它佔據了鬆散。然後,我確保通過給每個列的最小寬度和寬度允許剩下的列有足夠的空間來顯示它們的數據和它們的頭標渲染器。我遇到問題的唯一時間是在允許的空間中顯示太多列,在這種情況下,您將獲得一個水平滾動條,並且所有(或大部分)投注都將關閉。

+0

但是,當您拉伸網格/應用程序時,唯一擴展的列將是可擴展的列,對不對?因此,所有這些都可以節省你的「真實」欄中的一個,從而不會被拉長。不知道這是一個更好的... – 2010-11-17 17:45:19

+1

我的解決方法的唯一好處是,它可以防止ADG觸發其糟糕的列寬度調整啓發式。我不提供它作爲靈丹妙藥。 – Robusto 2010-11-17 18:39:53

0

嘗試拍攝時,設置horizo​​ntalScrollPolicy爲開,讓Flex的調整列本身,然後設置horizo​​ntalScrollPolicy回關

+1

捕獲哪個事件?一些示例代碼會很好,因爲我非常喜歡將屬性設置爲true,然後在事件處理程序中設置爲false將不會影響任何內容,因爲Flex/Flash不是多線程的。 – 2011-04-14 12:14:06

1

如下解決了這個問題:

在creationComplete添加

{ 
..... 
grd_Principal.addEventListener(ResizeEvent.RESIZE, resizeGrid); 
grd_Principal.dispatchEvent(new ResizeEvent(ResizeEvent.RESIZE)); 
... 
} 

protected function resizeGrid(event:ResizeEvent):void 
{ 
    grd_Principal.horizontalScrollPolicy = 'on';    // datagrid 
    ..... your DataGridColumn 
    dgc_nCdId.width = grd_Principal.width * 0.06;    //datagridcolumn in percent 
    dgc_Excluir.width = 20;              //normal 
    dgc_cNmUsuario.width = grd_Principal.width * 0.226; 

    grd_Principal.horizontalScrollPolicy = 'off';    
} 

+0

因此,您正在手動設置每個調整大小的每列的寬度。猜測這可能是有用的,如果這有效,但有點吮吸不得不在代碼中指定所有寬度而不是在MXML標記中。 – 2012-03-02 21:23:30