Consegui!!!!
Vou postar aqui pra quem precisar saber como resolve...Ficou assim:
if (event.result.produtos.item is ArrayCollection){ //entra aqui caso
tenha +1 registro no xml
arrProdutos = event.result.produtos.item as ArrayCollection;
} else {
newArray = ArrayUtil.toArray(event.result.produtos.item);
arrProdutos = new ArrayCollection(newArray);
}
On 24 mar, 20:07, Beck Novaes <[EMAIL PROTECTED]> wrote:
> Por que no lugar de usar um Array Collection você não usa um
> XMLListCollection já que você está trabalhando com HTTPService?
>
> []'s
> Beck Novaes
>
> On Mar 24, 4:49 pm, Pat <[EMAIL PROTECTED]> wrote:
>
>
>
> > Ninguém sabe como me ajudar?
>
> > On 19 mar, 14:43, Pat <[EMAIL PROTECTED]> wrote:
>
> > > Eu tinha feito meu vitrine.as assim:
>
> > > if ( event.result.produtos != 'null' ) {
> > > if ( event.result.produtos is ArrayCollection ) {
> > > arrProdutos = event.result.produtos.item as
> > > ArrayCollection;
> > > //Alert.show('ArrayCollection');
> > > }
> > > if ( event.result.produtos is ObjectProxy ) {
> > > var arrProdutos:ArrayCollection = new
> > > ArrayCollection();
> > > var produto:ObjectProxy = event.result.produtos
> > > as ObjectProxy;
> > > arrProdutos.addItem(produto);
> > > //Alert.show('ObjectProxy');
> > > }
> > > } else {
> > > Alert.show('Não foram encontrados produtos!');
> > > }
>
> > > mas ele nunca devolvia nada, a vitrine fica sempre vazia, entaum fiz
> > > do jeito que mandei (antes deste post) e vi que sempre entra no
> > > ( event.result.produtos is ObjectProxy )
>
> > > On 19 mar, 14:30, Pat <[EMAIL PROTECTED]> wrote:
>
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
> > > > layout="vertical"
> > > > width="862"
> > > > height="440"
> > > > xmlns:componente="componente.*"
> > > > paddingLeft="10" paddingRight="10" paddingBottom="10"
> > > > creationComplete="loading();"
> > > > horizontalScrollPolicy="off" verticalScrollPolicy="off">
>
> > > > <mx:Script source="as/loading.as" />
> > > > <mx:Script source="as/vitrine.as" />
> > > > <mx:Script source="as/popup.as" />
> > > > <mx:Script source="as/pesquisa.as" />
>
> > > > <mx:HTTPService
> > > > id="sql_vitrine"
> > > > showBusyCursor="true"
> > > > method="POST"
> > > >
> > > > url="http://localhost/osgtungaloy.com.br/xml/xml_produtos.asp"
> > > > fault="onError(event)"
> > > > result="resultado(event);">
> > > > <mx:request>
> > > > <txt_busca>{txt_busca.text}</txt_busca>
> > > > </mx:request>
> > > > </mx:HTTPService>
>
> > > > <mx:HTTPService
> > > > id="sql_pesquisaSubcategoria"
> > > > method="POST"
> > > > url="http://localhost/osgtungaloy.com.br/xml/
> > > > xml_pesquisa_subcategoria.asp"
> > > > fault="onError(event)"
> > > > result="resultado_subcategoria(event);">
> > > > </mx:HTTPService>
>
> > > > <mx:ApplicationControlBar dock="true">
> > > > <mx:Label text="MACHOS" id="txt_titulo" color="#ffffff"
> > > > fontWeight="bold" fontSize="18"/>
> > > > <mx:Spacer width="100%"/>
> > > > <mx:VRule width="5" height="20"/>
> > > > <mx:Button label="Legenda" id="btn_legenda"
> > > > click="createPopUp(event)" />
> > > > <mx:VRule height="20" width="5"/>
> > > > <mx:Spacer width="10"/>
> > > > <mx:Label text="Localizar por Nome ou Referência: "
> > > > id="lbl_busca"/>
> > > > <mx:TextInput id="txt_busca" enter="sql_vitrine.send()"/>
> > > > <mx:Button label="OK" id="btn_busca" click="sql_vitrine.send()"
> > > > />
> > > > </mx:ApplicationControlBar>
>
> > > > <mx:HBox width="100%" height="100%" verticalScrollPolicy="off"
> > > > horizontalScrollPolicy="off">
> > > > <componente:com_pesquisa width="200" height="100%" />
> > > > <componente:com_vitrine arrDados="{arrProdutos}" />
> > > > </mx:HBox>
>
> > > > </mx:Application>
>
> > > > vitrine.as
> > > > // ActionScript file
> > > > import mx.rpc.events.FaultEvent;
> > > > import mx.collections.ArrayCollection;
> > > > import mx.rpc.events.ResultEvent;
> > > > import mx.utils.ObjectUtil;
> > > > import mx.controls.Alert;
> > > > import mx.utils.ObjectProxy;
>
> > > > [Bindable] public var arrProdutos:ArrayCollection;
>
> > > > // monta array com o retorno de xml de procutos
> > > > public function resultado(event:ResultEvent):void{
>
> > > > if ( event.result.produtos != 'null' ) {
> > > > arrProdutos = event.result.produtos.item as
> > > > ArrayCollection;
> > > > if ( event.result.produtos is ObjectProxy ) {
> > > > Alert.show('é ObjectProxy');
> > > > }
> > > > } else {
> > > > Alert.show('Não foram encontrados produtos.');
> > > > txt_busca.text = '';
> > > > sql_vitrine.send();
> > > > }
>
> > > > }
>
> > > > // retorno do fault no httpservice
> > > > public function onError(event:FaultEvent):void{
> > > > Alert.show(ObjectUtil.toString(event.fault));
>
> > > > }
>
> > > > On 18 mar, 17:40, Daniel Negri <[EMAIL PROTECTED]> wrote:
>
> > > > > Você definiu uma variável para ser o dataProvider da tabela? Esta
> > > > > variável
> > > > > estava com o [Bindable]?
> > > > > Me manda seu código dessa tela, pode ser o arquivo mesmo, pra que eu
> > > > > possa
> > > > > olhar.
>
> > > > > -----Mensagem original-----
> > > > > De: [email protected] [mailto:[EMAIL PROTECTED] Em nome de
> > > > > Pat
> > > > > Enviada em: terça-feira, 18 de março de 2008 16:12
> > > > > Para: flexdev
> > > > > Assunto: [flexdev] Re: RES: [flexdev] as ArrayCollection para 1
> > > > > registro do
> > > > > xml
>
> > > > > arrumei meu código, agora ele sempre entra no if do ObjectProxy, e não
> > > > > popula minha vitrine
>
> > > > > =/
>
> > > > > On 18 mar, 14:29, Daniel Negri <[EMAIL PROTECTED]> wrote:
>
> > > > > > Doutura, não esquece... quando só vem um produto na lista ele não
> > > > > > vai
> > > > > > reconhecer como ArrayCollection e sim como ObjectProxy. Veja o
> > > > > > exemplo:
>
> > > > > > public function resultHandler(event:ResultEvent):void {
> > > > > > if ( event.result.produtos != null ) {
> > > > > > if ( event.result.produtos is ArrayCollection ) {
> > > > > > var listaProdutos:ArrayCollection =
> > > > > > event.result.produtos as ArrayCollection;
> > > > > > código.....
> > > > > > }
>
> > > > > > if ( event.result.produtos is ObjectProxy ) {
> > > > > > var listaProdutos:ArrayCollection = new
> > > > > > ArrayCollection();
> > > > > > var produto:ObjectProxy =
> > > > > > event.result.produtos as
> > > > > > ObjectProxy;
> > > > > > listaProdutso.addItem(produto);
> > > > > > }
> > > > > > } else {
>
> > > > > > Alert.show('Não foram encontrados produtos!');
> > > > > > }
>
> > > > > > }
>
> > > > > > -----Mensagem original-----
> > > > > > De: [email protected] [mailto:[EMAIL PROTECTED] Em nome de
> > > > > PB
> > > > > > Enviada em: terça-feira, 18 de março de 2008 13:34
> > > > > > Para: flexdev
> > > > > > Assunto: [flexdev] as ArrayCollection para 1 registro do xml
>
> > > > > > tenho a seguinte chamada como retorno do meu httpservice:
>
> > > > > > public function resultado(event:ResultEvent):void{
> > > > > > --if ( event.result.produtos != 'null' ) {
> > > > > > ------arrProdutos = event.result.produtos.item as ArrayCollection;
> > > > > > ------//arrProdutos = new
> > > > > > ArrayCollection([event.result.produtos.item]);
> > > > > > --} else {
> > > > > > ------Alert.show('Não foram encontrados produtos.');
> > > > > > ------txt_busca.text = '';
> > > > > > ------sql_vitrine.send();
> > > > > > --}
>
> > > > > > }
>
> > > > > > o problema é quando o retorno do meu xml só tem um registro, não
> > > > > > aparece nada.
>
> > > > > > tentei utilizar a linha que esta comentada no código (arrProdutos =
> > > > > > new ArrayCollection([event.result.produtos.item]); ) pois vi isso
> > > > > > como
> > > > > > solução de uma amigo aqui do fórum, mas dá erro no retorno de uma
> > > > > > das
> > > > > > propriedades do meu xml.
>
> > > > > > Alguém sabe como resolvo isto?- Ocultar texto entre aspas -
>
> > > > > - Mostrar texto entre aspas -- Ocultar texto entre aspas -
>
> > > > - Mostrar texto entre aspas -- Ocultar texto entre aspas -
>
> > > - Mostrar texto entre aspas -- Ocultar texto entre aspas -
>
> - Mostrar texto entre aspas -
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---