PDA

Просмотр полной версии : Как объединить строку в AdvancedDataGrid


VovkaMorkovka1
02.12.2009, 15:47
Всем привет нужно в AdvancedDataGrid показывать строку в зависимости от содержимого датапровайдера в виде одной ячейки. Т.е. идёт несколько строк как обычно, потом одна сплошная и опять несколько строк.

Данные будут подгружаться в таблицу динамически, поэтому решение "итемрендерер - таблица" не подходит, группировка тоже.

Т.е. нужен какой - то вариант с использованием AdvancedDataGridRendererProvider

Пробовал с иерархической структурой, но начальству не нравится расхлопывающиеся итемы

Может кто - то подскажет как это провернуть?


Другими словами есть сниппет приведённый ниже, нужно менять columnSpan в зависимости от содержимого строки

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;

[Bindable]
private var dataC:ArrayCollection = new ArrayCollection([
{
summary:"sum1"
},
{
type:"Discovery3",
value:11
},
{
type:"Discovery2",
value:11


},
{
type:"Discovery2",
value:11


},
{
summary:"sum3"
},

]);


function dataChangeEvent(event:FlexEvent):void
{
if (data.hasOwnProperty(name))
{
summaryRendererProvider.columnIndex = 2
summaryRendererProvider.columnSpan = 1;

}else{
summaryRendererProvider.columnIndex = 0
summaryRendererProvider.columnSpan = 0;
}
}
]]>
</mx:Script>
<mx:Panel title="Blah-Blah"
height="75%" width="75%" layout="horizontal"
paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10">
<mx:AdvancedDataGrid id="myADG"
width="100%" height="100%"
variableRowHeight="true" dataProvider="{dataC}">

<mx:columns>
<mx:AdvancedDataGridColumn dataField="type" headerText="type"/>
<mx:AdvancedDataGridColumn dataField="value" headerText="value"/>
<mx:AdvancedDataGridColumn dataField="summary" headerText="summary"/>
</mx:columns>

<mx:rendererProviders>

<mx:AdvancedDataGridRendererProvider
dataField="summary"

id="summaryRendererProvider" >


<mx:renderer >

<mx:Component>

<mx:Label height="30" text="{data.summary}" textAlign="center" />
</mx:Component>
</mx:renderer>
</mx:AdvancedDataGridRendererProvider>
</mx:rendererProviders>
</mx:AdvancedDataGrid>
</mx:Panel>
</mx:Application>