2011-06-02 99 views
12

我可以有一個垂直顯示數據而不是水平顯示數據的數據網格嗎?Flex Vertical Datagrid

例如,如果這是我的數據提供程序:

array('firstname':'John','lastname':'Doe'), 
array('firstname':'Jack','lastname':'Jill') 

我要顯示的數據是這樣的:

Fields  Value1 Value2 
Firstname  John  Jack 
Lastname  Doe  Jill 

等....最新最好的方式來實現這..如果我不得不擴展datagrid組件,請解釋如何..

+0

+1好問題, – Ryan 2011-06-02 13:17:52

+0

Flex 4.5 Datagrid或MX數據網格? Flex 3或4? – 2011-06-02 13:49:18

+0

oh im sorry ... flex 4 – Lin 2011-06-02 14:50:12

回答

4

所以這是一個黑客......但事實證明,你不能輕易改變火花datagrid的流量。從我所知道的情況來看,你需要覆蓋它內部的每個組件,這需要很長時間。 DataGrid使用自己的佈局,它似乎非常設置1行= 1的數據主題。

所以......開始破解:

<s:DataGrid rotation="270"> 
    <s:columns> 
    <s:ArrayList> 
     <s:GridColumn itemRenderer="unrotate" headerRenderer="headerUnrotate"/> 
     <s:GridColumn itemRenderer="unrotate" headerRenderer="headerUnrotate"/> 
    </s:ArrayList> 
    </s:columns> 
</s:DataGrid> 

好了...我做了什麼?我只是旋轉整個數據網格。我該如何解決這個問題,所以我們不必歪曲頭部?我取消旋轉itemrenderer中的每一列。 HOLY HACK蝙蝠俠。

這裏的項目渲染unrotate:

<?xml version="1.0" encoding="utf-8"?> 
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true"> 

<fx:Script> 
    <![CDATA[ 
     override public function prepare(hasBeenRecycled:Boolean):void { 
      lblData.text = data[column.dataField] 
     } 
    ]]> 
</fx:Script> 

<s:Label id="lblData" top="9" left="7" rotation="90"/> 

</s:GridItemRenderer> 

標題代碼是相似的,只是旋轉90,回到我們開始的地方。我知道這個解決方案並不完美,但它是我能想到的最好,沒有完全搞亂DataGrid類

你可能還需要重寫皮膚以提供一個WIDER頭......這實際上是一個TALLER頭我們旋轉270度。其他呢,它應該實際上工作好吧...