2011-11-18 27 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