Combobox Dataprovider - получает только labelField из XML, а не связанный идентификатор

Вернемся на этот раз, работая с поставщиками данных.

Ну, я немного потренировался с Flex, и я искал, и мне удалось получить ComboBox, заполненный данными XML. Он работает довольно хорошо, он получает LabelField для каждого элемента из XML, но 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>

А теперь вывод XML из PHP:

<?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"; что в соответствии с примерами, которые я видел в Интернете, он должен включать идентификатор из XML для каждого элемента NOME в ComboBox.

Я новичок в Flex, так что, вероятно, не правильно выразился.

Любая помощь приветствуется. Благодарю.

1 ответ

Решение

Вам не нужна эта строка:

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>

Отредактировал провайдер данных. Спасибо

Другие вопросы по тегам