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>
Отредактировал провайдер данных. Спасибо