Como precisa apenas do ID e do nome para apresentar no ComboBox eu
trabalharia diretamente com um Array.
Como eu faria:
[Bindable]
private var lista_empresas : ArrayCollection;
//Aqui eu pego o retorno do php
public function resultEmpresas(event:ResultEvent):void {
listaEmpresas = event.result;
var descricao:String;
cboEmpresas.dataProvider=null;
if( listaEmpresas.length > 0 )
{
var aResultado:Array = new Array();
for(var i:int=0; i<listaEmpresas.length; i++)
{
descricao = listaEmpresas[i].nome;
if( aResultado.indexOf(descricao) == -1 )
{
aResultado.push(descricao);
}
}
aResultado.sort();
aResultado.unshift(Todos);
cboEmpresas.selectedIndex = 0;
}
}
Agora que terminei de fazer que me atentei que não estou passando o ID real
da empresa e sim a posição no array.
Pode tentar trocar a linha *aResultado.push(descricao);* por
*aResultado[listaEmpresas[i].id]
= descricao;*
Abraço!
2010/8/18 Fábio Goll <[email protected]>
> Essa lista_empresa não é um Array ou ArrayCollection? Pq está utilizando
> object?
>
> O que tem dentro da lista? Um objeto? Somente strings?
>
> Pq vc está adicionando somente uma string no final da sua lista.
>
> Eu faria assim (supondo que tenha objetos na colecao, não strings):
>
> private var listaEmpresas : ArrayCollection;
>
>
> public function resultEmpresas(event:ResultEvent):void {
> listaEmpresas = event.result as ArrayCollection;
>
> var itemTodos: TipoItemNaColecao = new TipoItemNaColecao();
> itemTodos.nome = "Todos";
> itemTodos.codigo = 0; // ou null dependendo de como vc esta trabalhando
>
> listaEmpresas.addItemAt( itemTodos , 0 );
>
> }
>
> Daí na hora de pegar o selecionado é normal, combo.selectedItem.codigo.
>
> Dai no php vc trata, se for 0 o codigo é todas as empresas, simples assim
> ... :D
>
> 2010/8/18 Diego Feijó <[email protected]>
>
> Bom dia a todos, vejam como estou fazendo.
>>
>> Essa é minha variável
>>
>> [Bindable]
>> private var lista_empresas : Object;
>>
>>
>> Aqui eu pego o retorno do php
>>
>> public function resultEmpresas(event:ResultEvent):void {
>>
>> lista_empresas = event.result as Object;
>> lista_empresas[lista_empresas.length] = 'Todos';
>>
>> }
>>
>> Vejam que depois de receber os dados coloquei a linha abaixo
>> "lista_empresas[lista_empresas.length] = 'Todos';" que a princípio
>> funcionou porém me dá o erro que coloquei na pergunta a cima. Na forma
>> antiga eu mandava a empresa selecionada da seguinte forma
>> "cmb_empresa.selectedItem.pkcodigo" e funciona perfeitamente agora o
>> problema é que o "TODOS" não tem id por isso tentei enviar assim
>> "cmb_empresa.text" mas me dá erro.
>>
>> Alguma sugestão.
>>
>> Obrigado Linconl e Bruno pelas respostas.
>>
>> On 17 ago, 20:42, Lincoln Silva <[email protected]> wrote:
>> > Para trabalhar com esse tipo de situação, eu costumo usar um objeto para
>> > popular o combo (não utilizo php, uso .net com fluorine, mas imagino que
>> os
>> > objetos possam ser serializaveis).
>> >
>> > qdo passo os dados pro back-end, sempre passo o id do objeto (no seu
>> caso, o
>> > id da empresa) que preenche o combo.
>> >
>> > Coloco um objeto empresa com id = 0 e descrição = "TODOS", e faço a
>> > verificação no back-end, se o id for 0 eu monto a query para trazer
>> tudo.
>> >
>> > --
>> > Lincoln T. do Nascimento Silva
>> > Informática Biomédica - FFCLRP/FMRP
>> > USP - Ribeirão Preto
>> >
>> > 2010/8/17 bruno bg <[email protected]>
>> >
>> > > Cria um combo para escolher a empresa Inicial
>> > > e outro combo para escolher a empresa final.
>> >
>> > > Ou cria um checkBox ao lado do combo chamado TODAS AS EMPRESAS, que
>> quando
>> > > o usuário marcar, você desabilita o combo.
>> >
>> > > testa essas combinações e envia para o servidor fazer o trabalho
>> pesado.
>> >
>> > > --
>> > > ****************************************************
>> > >www.brunobg.com
>> > > [email protected]
>> > > blogflex.brunobg.com
>> > > @brunogrohs
>> >
>> > > Em 17 de agosto de 2010 17:27, Diego Feijó <[email protected]>
>> escreveu:
>> >
>> > > Boa tarde a todos, pessoal tenho uma tela onde realizo uma consulta no
>> > >> BD. Nessa tela tenho uma combobox que me lista as empresas
>> cadastradas
>> > >> no banco. Até aqui tudo bem, porém o pessoal me pediu para que
>> tivesse
>> > >> a opção de puxar por todas as empresas, pensei em colocar uma opção
>> de
>> > >> "TODOS" no combobox e fazer o filtro lá na minha classe no zend_amf.
>> > >> Porém quando tento enviar cmb_empresa.text o flex me retorna um erro.
>> > >> Como poderia resolver isso.
>> >
>> > >> Obrigado a Todos,
>> > >> Diego Feijó.
>> >
>> > >> --
>> > >> 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 emhttp://
>> groups.google.com/group/flexdev
>> >
>> > > --
>> > > 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 emhttp://
>> groups.google.com/group/flexdev
>> >
>> >
>>
>> --
>> 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
>>
>
>
>
> --
> Fábio Goll
> Gtalk/Msn: [email protected]
> Twitter: @fabiogoll
>
> --
> 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
>
--
Atenciosamente,
Dyego de Andrade Vieira
(61) 8402-2046
--
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