2011-11-18 79 views
0

我想要一個spark數據網格,它包含所有相關的行。目前看起來像單元格的寬度取決於第一行的內容,然後後續的行是單詞包裝的。例如:Flex火花數據網格和單詞換行


1_ 如果柱1具有

ABCDE FGHIJ

第一行和 第二行ABCDE FGHIJ klmnop

此第二行。將字包裹。


2_ 如果柱1具有

第一行ABCDE FGHIJ klmnop

和第二排 ABCDE FGHIJ

就沒有自動換行和列1將寬度爲abcde fghij klmnop


我想要的是在適當的情況下有一個適合容器和行單詞的數據網格。

到目前爲止我的代碼是

<fx:Script><![CDATA[ 
import mx.collections.ArrayCollection; 
import mx.events.FlexEvent; 

private function contentCreationCompleteHandler(event:FlexEvent):void { 
    var dyna1:Object = { name: "John", description: "abcde fghij klmno pqrst uvwxyz abcde fghij klmno pqrst uvwxyz abcde fghij klmno pqrst uvwxyz "}; 
    var dyna2:Object = { name: "Richard", description: "abcde fghij klmno pqrst uvwxyz abcde fghij klmno pqrst uvwxyz " }; 
    var dyna3:Object = { name: "Peter", description: "abcde fghij klmno pqrst uvwxyz " }; 
    grid.dataProvider = new ArrayCollection([dyna2, dyna1, dyna3]); 
} 
]]></fx:Script> 

<s:DataGrid id="grid" width="100%" height="100%" variableRowHeight="true"> 
<s:columns> 
    <s:ArrayList> 
     <s:GridColumn headerText="name" width = "100" dataField="name"/> 
     <s:GridColumn headerText="description" dataField="description"/> 
    </s:ArrayList> 
</s:columns> 
</s:DataGrid> 

我指定用於所述數據網格具有100%的寬度與容器具有的400的寬度的容器可以被調整大小,所以我想的描述填充可用空間。當應用程序打開時有一個滾動條,整個數據網格大於400.我希望數據網格將保持在400,並相應地進行wordwrap。

如果我移動的順序對象被添加到數據提供者我有不同的結果。我設置variableRowHeight爲true,以啓用自動換行作爲這個優秀的文章中詳細 http://hansmuller-flex.blogspot.com/2011/05/controlling-text-wrapping-in-datagrid.html

我怎樣才能獲得DataGrid的動態調整與容器寬度的100%和自動換行的所有行的情況發生? (第1行後,不只是行)

在此先感謝

+0

我試圖改變DataGrid的起跑線上的其中包括指定horizo​​ntalScrollPolicy但是這也行不通。 – RNJ

回答

2

我曾與第一排的寬度同樣的問題被搞砸了許多小時的挖掘左右後終於通過這個答案跌跌撞撞地固定第一行寬在幾個博客上。

基本上,你必須設置在數據網格否則星火的Datagrid會自動使用第一行中的「typicalItem」確定寬度:

DataGrid的typicalItem用於計算的 初始寬度每個GridColumn沒有指定明確的寬度。

下面是一個指定典型項目的DataGrid示例。

<s:DataGrid id="dataGrid" requestedRowCount="5" verticalCenter="0" horizontalCenter="0"> 
    <s:typicalItem> 
     <s:DataItem key="99999" name="Typical Item" price="123.45" call="false"/> 
    </s:typicalItem> 

    <s:ArrayCollection id="items"> 
     <s:DataItem key="1000" name="Abrasive" price="100.11" call="false"/> 
     <s:DataItem key="1001" name="Brush" price="110.01" call="true"/> 
     ... 
    </s:ArrayCollection> 
</s:DataGrid> 

欲瞭解更多信息,請查看以下鏈接:

+0

非常感謝jnova。我剛剛遇到了這個問題,並感到沮喪。我會檢查你的答案 – RNJ

+0

剛剛完成檢查。非常感謝!這真的幫了我 – RNJ

+0

這個工作,除非你不知道數據是什麼。 – SZH