我可以有一个datagrid垂直显示数据而不是水平?
例如,如果这是我的dataprovider:
array('firstname':'John','lastname':'Doe'),array('firstname':'Jack','lastname':'Jill')
我想要这样显示数据:
Fields Value1 Value2 Firstname John Jack Lastname Doe Jill
等等….什么是最好的方式来实现这一点..如果我必须扩展datagrid组件,请说明如何..
解决方法
所以这是一个黑客…但事实证明,你不能轻易地改变火花datagrid的流.从我可以看出,你需要覆盖它内部的每个组件,这将需要很长时间. DataGrid使用自己的布局,它看起来非常适合1 row = 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>
好的,我做了什么?我只是旋转整个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度.其他那么它应该实际工作好吗?