微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flex Vertical Datagrid

我可以有一个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度.其他那么它应该实际工作好吗?

原文地址:https://www.jb51.cc/flex/174294.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐