PDA

Просмотр полной версии : Как заполнить данными ComboBox из результата HTTPService


atmel
14.03.2007, 23:39
Пожалуйста подскажите как заполнить данными ComboBox из результата HTTPService.

есть запрос:


<mx:HTTPService id="userAlboms" resultFormat="e4x" url="{ 'http://localhost/flex_fotoalbom/data/albom.xml'}" useProxy="false" method="POST">

</mx:HTTPService>

.............

<mx:ComboBox x="22" y="10" width="604" change="userRequest.send();">
<mx:prompt>Выберите альбом</mx:prompt>
<mx:Object label="{ userAlboms.lastResult.albom}" data="{ userAlboms.lastResult.albom}"/>

</mx:ComboBox>



вопрос в том что не могу правильно заполнить ComboBox тоесть присвоить
значения label и data , в итоге все отображается неправильно

это возвращаемый XML

<alboms>
<albom data="1" label="Первый альбом"/>
<albom data="2" label="Второй альбом"/>
<albom data="3" label="Третий альбом"/>
</alboms>


прийму любые варианты решения проблемы , а то уже второй день бьюсь

atmel
15.03.2007, 02:52
это написано на flex 2. если это имеет значение

etc
15.03.2007, 13:22
Открыть справку и найти примеры сложно?

И зачем код оформлять тегом HTML? Неужели прекрасно видно, что написано?

baron27
15.03.2007, 13:24
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
[Bindable]
private var myDP:XMLList;
private function initApp():void
{
userAlboms.send();
}

private function onResult(event:ResultEvent):void
{
myDP = event.result.albom;
}
]]>
</mx:Script>

<mx:HTTPService id="userAlboms" result="onResult(event)" resultFormat="e4x" useProxy="false" url="test.xml"/>
<mx:ComboBox prompt="Выберите альбом" dataProvider="{myDP}" id="cb_albom" labelField="@label"
change="Alert.show(myDP[cb_albom.selectedIndex].@data)"/>

</mx:Application>

atmel
15.03.2007, 14:08
baron27 - спасибо.

__etc - еслибы мог найти в документации то не спрашивал бы

etc
15.03.2007, 14:16
__etc - еслибы мог найти в документации то не спрашивал бы
Ну как же? Про dataProvider, HTTPService информации никакой по-вашему?
http://livedocs.adobe.com/flex/2/langref/mx/rpc/http/mxml/HTTPService.html в конце пример. Изменить его под ComboBox, я думаю, не должно представлять никакой сложности.

__i
15.03.2007, 15:04
тут линкой поделились
http://gorbatov.blogspot.com/2007/03/e4x.html

atmel
15.03.2007, 15:39
Ну как же? Про dataProvider, HTTPService информации никакой по-вашему?
http://livedocs.adobe.com/flex/2/langref/mx/rpc/http/mxml/HTTPService.html в конце пример. Изменить его под ComboBox, я думаю, не должно представлять никакой сложности.

Если имеется в виду этот кусок кода

<mx:DataGrid id="dgPosts" height="50%" width="75%"
dataProvider="{feedRequest.lastResult.rss.channel.item}">
<mx:columns>
<mx:DataGridColumn headerText="Posts" dataField="title"/>
<mx:DataGridColumn headerText="Date" dataField="pubDate"/>
</mx:columns>
</mx:DataGrid>

то какраз я и не смог его преобразовать.

тут линкой поделились
http://gorbatov.blogspot.com/2007/03/e4x.html
Спасибо.

После того как мне ответил baron27 я увидел эту ссылочку в его подписи

etc
15.03.2007, 15:43
Вместо HTML надо использовать тег CODE, а не вообще не оформлять код.

Странно, от того примера прийти к этому, по-моему, совсем не представляет сложности:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="userAlboms.send()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
]]>
</mx:Script>

<mx:HTTPService id="userAlboms" resultFormat="e4x" useProxy="false" url="album.xml"/>
<mx:ComboBox prompt="Выберите альбом" dataProvider="{userAlboms.lastResult.albom}" id="cb_albom" labelField="@label" change="Alert.show(userAlboms.lastResult.albom[cb_albom.selectedIndex].@data)"/>

</mx:Application>