代码之家  ›  专栏  ›  技术社区  ›  Fábio Antunes

ComboBox DataProvider-仅从XML获取LabelField,而不是关联的ID

  •  1
  • Fábio Antunes  · 技术社区  · 16 年前

    这次再次回到与数据提供者一起工作。

    我用flex做了一些培训,我已经搜索过了,我设法通过XML数据填充了一个组合框。它工作得很好,他从XML中获取每个项目的labelfield,但是与每个项目相关联的ID随后从XML中获取。

    代码:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="355" height="465" creationComplete="getPaises.send();"
    xmlns:ns1="com.*" title="Perfil" fontWeight="normal">
    
    <mx:HTTPService id="getPaises" url="com-handler/paises.php" result="paisesHandler()"/>
    
        <mx:Script>
            <![CDATA[
                private function paisesHandler():void
                {   
                    pais.dataProvider = getPaises.lastResult.paises.pais;
                    pais.data = "id";
                    pais.labelField = "nome";
    
                }
           ]]>
    
        </mx:Script>
    
    <mx:ComboBox x="121" y="328" width="200" id="pais">
    </mx:ComboBox>
    
    </mx:TitleWindow>
    

    现在,来自PHP的输出XML:

    <?xml version="1.0" encoding="utf-8"?>
    <paises>
    
        <pais>
            <id>1</id>
            <nome>Portugal</nome>
        </pais>
    
        <pais>
            <id>2</id>
    
            <nome>Espanha</nome>
        </pais>
    
    </paises
    

    好吧,这就是它所发生的,我确实从XML中获取国家名称 ( <nome></nome> )但他没有把相关的身份证( <id</id> )


    现在,因为我放置了一个可绑定到ComboBox.SelectedIndex的标签

    <mx:Label x="121" y="403" text="{pais.selectedIndex}"/>
    

    正如你所看到的,我曾经 pais.data = "id"; 根据我在Web上看到的示例,它应该包括从XML到组合框中每个项目名称的ID。

    我对flex很陌生,所以可能表达方式不对。

    感谢您的帮助。谢谢。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Amarghosh    16 年前

    你不需要这条线:

    pais.data = "id";
    

    将标签更改为

    <mx:Label x="121" y="403" text="{pais.selectedItem.id}"/>
    

    编辑:代码可以简化为

    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
      width="355" height="465" creationComplete="getPaises.send();"
      xmlns:ns1="com.*" title="Perfil" fontWeight="normal">
    
      <mx:HTTPService id="getPaises" url="com-handler/paises.php" resultFormat="e4x"/>
    
      <mx:ComboBox x="121" y="328" width="200" id="pais" labelField="nome" 
        dataProvider="{XML(getPaises.lastResult).pais}"/>
    </mx:TitleWindow>
    

    已编辑数据提供程序。谢谢

    推荐文章