如何在组合框项目渲染器中发送数据?

时间:2014-07-25 16:15:45

标签: actionscript-3 combobox itemrenderer

我想将数据发送到组合框项目渲染器,以便它同时具有下拉数据和selectedIndex。 请注意,combobox itemrenderer是List的一部分....所以如果数据是arraycollection,我试图使用list comprehension正确映射....

我实施的解决方案

假设组合框数据在ArrayCollection var d中。我创建了一个新的ArrayCollection d1,使d1项为{d:d,dSelectedIndex:whatever_val_u_determined}

在列表中,我设置了dataProvider = {d1}

在上面列表项的itemrenderer中,我设置了dataProvider = {data.d}和selectedIndex = {data.dSelectedIndex}

1 个答案:

答案 0 :(得分:0)

itemRenderer从ComboBox的dataProvider获取数据。例如,如果您像这样创建ComboBox

<s:ComboBox itemRendererFunction="myFunction"
            labelField="lastName">
     <s:dataProvider>
         <mx:ArrayList>
             <fx:Object firstName="Steve" lastName="Smith"/>
             <fx:Object firstName="John" lastName="Jones"/>
             <fx:Object firstName="Mary" lastName="Moore"/>
         </mx:ArrayList>
     </s:dataProvider>
</s:ComboBox>

然后你的itemRenderer将获得带有params firstName和lastName的对象的数据变量。

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark" height="30">

<fx:Script><![CDATA[
    public var country:String;
    ]]></fx:Script>

<s:Label text="{data.firstName + country}"/>

data.firstName将是&#34;史蒂夫&#34;或&#34;约翰&#34;或者&#34;玛丽&#34;

如果您想向itemRenderer发送其他参数,可以使用ComboBox的itemRendererFunction

private var Rend1:ClassFactory = new ClassFactory(MyItemRenderer);

    private function myFunction(item:Object):ClassFactory {
        Rend1.properties = {country: "USA"};
        return Rend1;
    }

现在在你的itemRenderer变量&#34; country&#34;将是&#34; USA&#34;