как показать сгруппированные данные в flex? - PullRequest
1 голос
/ 07 января 2010

<mx:XML id="inputData" > <Tulokset> <Tulos> <id>xx1</id> <group>xxx</group> </Tulos> <Tulos> <id>xx2</id> <group>xxx</group> </Tulos> <Tulos> <id>xx3</id> <group>yyy</group> </Tulos> </Tulokset> </mx:XML>

Я пытаюсь показать в приложении нечто подобное без AdvancedDataGrid.

группа ххх

<checkbox> id
<checkbox> id

группа гггг

<checkbox> id
<checkbox> id
....

1 Ответ

1 голос
/ 07 января 2010

Вы можете сделать это с помощью вложенного повторителя и e4x.Я не знаю, как в e4x получить уникальные имена групп, но вы можете сделать это с помощью функции-оболочки ActionScript.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Script>
        <![CDATA[

            private static function Unique(list:XMLList):XMLList 
            {
                var found:Object = new Object();
                var output:XML = <root />;

                for each(var node:XML in list) 
                {
                    var value:String = node.text().toString();
                    if (!found[value]) 
                    {
                        output.appendChild(node.copy());
                        found[value] = true;                    
                    }
                }
                return output.children();
            }
        ]]>
    </mx:Script>

    <mx:XML id="inputData" >  
        <Tulokset>  
            <Tulos>  
                <id>xx1</id>  
                <group>xxx</group>  
            </Tulos>  
            <Tulos>  
                <id>xx2</id>  
                <group>xxx</group>  
            </Tulos>  
            <Tulos>  
                <id>xx3</id>  
                <group>yyy</group>  
            </Tulos>  
        </Tulokset> 
    </mx:XML>

    <mx:Repeater id="groupRepeater" dataProvider="{Unique(inputData.Tulos.group)}">
        <mx:Label text="{groupRepeater.currentItem}" fontWeight="bold" />
        <mx:Repeater id="tulosRepeater" dataProvider="{inputData.Tulos.(group==groupRepeater.currentItem)}">
            <mx:Label text="{XML(tulosRepeater.currentItem).id}" />
        </mx:Repeater>
    </mx:Repeater>
</mx:Application>
...