使用XML dataprovider进行Horizo​​ntallist控制

时间:2010-03-04 16:57:58

标签: xml flex dataprovider horizontallist

我正在使用带有XML文件的Horizo​​ntalList控件作为数据提供者。 这就是XML的外观:

<data>
    <zone name="Europe">
        .
        .
        .
    </zone>
    <zone name="Japan">
        <stores>
            .
            .
            .
        </stores>
        <collections>
            <collection id="id1">
                <name>xxx</name>
                <model>xxx</model>
                <hierarchy>xxx</hierarchy>
                <thumbnail>assets/xxx.PNG</thumbnail>
            </collection>
            <collection id="id1Bis">
                <name>xxx</name>
                <model>xxx</model>
                <hierarchy>xxx</hierarchy>
                <thumbnail>assets/xxx.PNG</thumbnail>
            </collection>
            <collection id="id2">
                <name>xxx</name>
                <model>xxx</model>
                <hierarchy>xxx</hierarchy>
                <thumbnail>assets/xxx.PNG</thumbnail>
            </collection>
            <collection id="id2Bis">
                <name>xxx</name>
                <model>xxx</model>
                <hierarchy>xxx</hierarchy>
                <thumbnail>assets/xxx.PNG</thumbnail>
        </collections>
        <clarities>
            .
            .
            .
        </clarities>
    </zone> 
</data>

这就是我的控件看起来的样子

<mx:XML id="data" source="assets/SOD_division.xml"/>

<mx:HorizontalList 
    dataProvider="{data.division.(@name=='Japan').collections}"
    columnCount="2"
    itemRenderer="Renderer"
    width="500"
    horizontalScrollPolicy="off"
    />

我尝试使用一组对象作为数据提供者。项呈示器工作,horizo​​ntallist的行为与我期望的一样。 但是,当我使用xml文件时,它是空的....

我不知道为什么它不起作用... -_-'...

感谢您提供的任何帮助=)

此致 BS_C3

1 个答案:

答案 0 :(得分:1)

我注意到的第一件事是您的DP设置为:

dataProvider="{data.division.(@name=='Japan').collections}"

但这不是XML的结构。通过遵循XML示例,您的DP应该是:

dataProvider="{data.zone.(@name=='Japan').collections}"

现在,当你可能想要一个XMLList对象时,你会返回一个XML对象,在这种情况下你的DP应该是

dataProvider="{data.zone.(@name=='Japan').collections.collection}"

或者如果您不关心孩子的本地名称:

dataProvider="{data.zone.(@name=='Japan').collections.children()}"