Подтвердить что ты не робот

Flex Vertical Datagrid

Могу ли я иметь datagrid, который отображает данные вертикально, а не горизонтально?

например, если это мой датапровердер:

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

Я хочу, чтобы данные отображались следующим образом:

Fields        Value1    Value2
Firstname     John      Jack
Lastname      Doe       Jill

и т.д.. Какой лучший способ достичь этого. Если мне нужно расширить компонент datagrid, объясните, как..

4b9b3361

Ответ 1

Итак, это взломать... но, оказывается, вы не можете легко изменить поток искрового 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 batman.

здесь средство рендеринга элемента:

<?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 градусов. Другое, тогда это должно действительно работать нормально...