well... saiba q um "dataprovider contendo objects" é bem parecido com um
arrayCollection =D

Bem, presumo q vc está iniciando agora e é normal ter algumas dúvidas.
Dataprovider é um atributo dos componentes list-based (baseados em listas,
como datagrid, list, tileList, combobox, etc...) Em um dataprovider vc pode
ligar Arrays e ArrayCollections.

Já esses (array e arrayCollections) são TIPOS de dados, tratam-se de
estruturas.
ArrayCollection não é uma coleção de arrays. Poderia ser, mas não
obrigatoriamente muito menos "semanticamente". ArrayCollection é uma
estrutura de dados mais elaborada que o Array nativo do AS3.

Além do mais, existe uma questão importante também (e acho q pouca gente
sabe) é q os componentes do flex possuem uma "Default property" (propriedade
padrão). Isso significa q se vc não especifiar qual propriedade a ser usada
no componente, o componente vai atribuir os valores a default property dele,
e adivinha qual a default property da combo: dataprovider!
Ou seja, mesmo q vc não especificasse o <mx:dataprovider>, sem vc saber, o
dataprovider já estava sendo usado. =D


Bem, para não estender muito o assunto recomendo a leitura:

Usando dataproviders:
http://www.adobe.com/devnet/flex/quickstart/using_data_providers/

Usando um Array como dataprovider para um Tree:
http://blog.flexexamples.com/2007/12/03/using-an-array-as-a-data-provider-in-a-flex-tree-control/

E, pesquise no google por "Flex dataprovider" ... vc vai achar muuuita
coisa.


Um abraço, bom estudos.




2009/2/14 Bruno Carneiro <guimaraescarne...@gmail.com>

>
> Mário, obrigado pela sua resposta.
>
> Neste momento eu resolvi o problema usando um mx:dataProvider contendo
> objetos, acho que ficou bem melhor do que usando arrayCollection como
> eu estava fazendo.
>
> Só comentando, vc sugeriu usar um arrayCollection com objetos. Mesmo
> que funcione eu acho que não seria legal usar pq arrayCollection como
> o nome já diz, é uma coleção de arrays, então acho que fica
> semanticamente estranho eu usar um arrayCollection para agrupar
> objects. Por isso que eu usei o mx:dataProvider mesmo. Acho que ficou
> legal.
>
> Muito obrigado pela ajuda, foi construtiva.
>
>
> Portanto, me pareceu que a melhor forma de se implementar um Combo Box
> com selectedValue é usando um dataprovider contendo objects com um
> atributo value. Assim podemos pegar o value selecionado fazendo
> this.seuComboBox.selectedItem.value .
>
> Se ninguém tiver mais nenhuma observação a acrescentar, acho que o
> tópico está encerrado.
>
>
>
> On 14 fev, 00:38, Mário Júnior <juninho...@gmail.com> wrote:
> > acontece q usar arrays dentro de array colection está bem estranho.,...
> >
> > tente fazer assim: (pseudo-código)
> >
> > <combobox id="categoria" labelField="nome">
> > <arrayCollection>
> >
> > <object nome="Cereais" codigo="1" />
> > <object nome="Açougue" codigo="2" />
> > <object nome="Frutas e verduras" codigo="3" />
> > ... etc....
> >
> > </arrayCollection>
> > </combobox>
> >
> > A idéia é q vc tenha um arrayCollection de Objetos, e não de arrays. E
> que
> > seus objetos contenham atributos q caracterize-os.
> >
> > 2009/2/13 Bruno Carneiro <guimaraescarne...@gmail.com>
> >
> >
> >
> >
> >
> > > No meu caso eu fiz assim:
> >
> > > <mx:ComboBox x="95" y="82" width="125" id="categoria">
> > >            <mx:ArrayCollection>
> > >               <mx:Array>
> > >                        <mx:String>Cereais</mx:String>
> > >                        <mx:Number>0</mx:Number>
> > >               </mx:Array>
> > >               <mx:Array>
> > >                        <mx:String>Açougue</mx:String>
> > >                        <mx:Number>1</mx:Number>
> > >               </mx:Array>
> > >               <mx:Array>
> > >                        <mx:String>Frutas e Verduras</mx:String>
> > >                        <mx:Number>2</mx:Number>
> > >               </mx:Array>
> > >            </mx:ArrayCollection>
> > >        </mx:ComboBox>
> >
> > > O problema é que agora no label do combobox aparece assim "Cereais,0"
> > > "Açougue,1" etc...
> >
> > > Eu não consigo separar. Eu achei uma propriedade labelField e
> > > dataField mas não consegui usar com meu array collection, mesmo lendo
> > > a documentação no site da Adobe.
> >
> > > On 13 fev, 17:39, Bruno Carneiro <guimaraescarne...@gmail.com> wrote:
> > > > Alberto, muito obrigado.
> >
> > > > Essa sua dica funciona. Mas no meu caso atualmente eu tenho um array
> > > > collection, e futuramente eu vou ler do banco.
> >
> > > > Então, como no seu caso vc tem uma coleção de objetos, nos objetos vc
> > > > pode colocar a propriedade que vc quiser. No meu caso eu tenho que
> ver
> > > > como fazer.
> >
> > > > De qualquer forma, eu vou precisar lidar com isso quando eu importar
> > > > os dados do banco... eu ainda não aprendi a fazer isso.
> >
> > > > On 13 fev, 18:09, "Alberto" <alberto.ferre...@tan.com.br> wrote:
> >
> > > > > Tente assim.
> >
> > > > > <mx:ComboBox id="cbCategoria" selectedIndex="1">
> > > > >  <mx:dataProvider>
> > > > >       <mx:Object data=""   label="Cahaceiro"/>
> > > > >       <mx:Object data="-1" label="Cervejeiro"/>
> > > > >       <mx:Object data="0"  label="Não toma nada"/>
> > > > >  </mx:dataProvider>
> > > > > </mx:ComboBox>
> >
> > > > > cbCategoria.selectedItem.data
> >
> > --
> > Mário Júnior
> > Programador Java / Adobe Flexhttp://blog.mariojunior.com
> >
>


-- 
Mário Júnior
Programador Java / Adobe Flex
http://blog.mariojunior.com

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a