ComboBox não carrega os dados do datagrid

2 respostas
Roney_Edson_Raranhan

Minha aplicação em flex parou de funcionar as comboBox de todas as telas,
Eu estou utilizando um datagrid que recebe os dados do banco, que quando é clicado carrega as caixas de texto e as comboBox,
E do nada as comboBox não carregam mais as informaçõe do datagrid;
O pior que a ultima tela que fiz, esse codigo abaixo esta funcionando normalmente, e as telas anteriores não funcionam.

Esse é o metodo que carrega as caixas de texto e a comboBox quando clicado.
public function carregaTela():void{
		   currentState='';
		   codigo.text = dg.selectedItem.id;
		   nome.text = dg.selectedItem.nome;
		   cpf.text = dg.selectedItem.cpf;
		   carg.text = dg.selectedItem.cargo;
		   email.text = dg.selectedItem.email;
	       usuario.text = dg.selectedItem.usuario;
	       senha.text = dg.selectedItem.senha;	   
		  
		   nome.editable = true;
	       cpf.editable = true;
		   carg.enabled = true;
		   email.editable = true;
		   usuario.editable = true;
		   senha.editable = true;  
		}
O datagrid recebe um dataProvaider de funcionario;
<mx:DataGrid doubleClick="{carregaTela()}" doubleClickEnabled="true" styleName="DataGrid" x="0" y="37" id="dg"
                                       width="559" height="221" dataProvider="{funcionario}">
				    	<mx:columns>
				    		<mx:DataGridColumn width="30"  headerText="Codigo" dataField="id"/>
				    		<mx:DataGridColumn width="100" headerText="Nome"   dataField="nome"/>
				    		<mx:DataGridColumn width="70"  headerText="CPF"    dataField="cpf"/>
				    		<mx:DataGridColumn width="100" headerText="Cargo"  dataField="cargo"/>
				    		<mx:DataGridColumn width="0"   visible="false"     dataField="usuario"/>
				    		<mx:DataGridColumn width="0"   visible="false"     dataField="senha"/>
				    		<mx:DataGridColumn visible="false" dataField="email"/>
				    	</mx:columns>
</mx:DataGrid>
Esse datagrid é populado por um arrayColection, que é listado no Controlador. Pois utilizo o BlazerDs para Flex trocar informações com o Java e no controlador utilizo esse metodo.
public List listarFuncionarioDatagrid() {
		FuncionarioDAO dao = new FuncionarioDAO();
		List funcionario = new ArrayList();
		funcionario = dao.listar_Funcionarios();
		List saida = new ArrayList();
		for (int i = 0; i < funcionario.size(); i++) {
			Funcionario var = (Funcionario) funcionario.get(i);
			// criando um objeto(visão) que será utilizado para exibir dados
			// adequadamente na tabela
			VisaoFuncionarios visao = new VisaoFuncionarios();
			visao.setId(var.getId());
			visao.setNome(var.getNome());
			visao.setCpf(var.getCpf());
			visao.setEmail(var.getEmail());
			visao.setSenha(var.getSenha());
			visao.setUsuario(var.getUsuario());
			visao.setCargo(var.getCargo().getId()+"-"+var.getCargo().getNome());
			saida.add(visao);
		}
		return saida;
E para popular a comboBox utilizo esse metodo no controlador;
// listar cargo para preencher o combobox da tela cadastro de funcinario
	@SuppressWarnings("unchecked")
	public List listarCargoCombo() {
		CargoDAO dao = new CargoDAO();
		List cargos = new ArrayList();
		cargos = dao.listar();
		List saida = new ArrayList();
		saida.add("Selecione");
		for (int i = 0; i < cargos.size(); i++) {
			Cargo var = (Cargo) cargos.get(i);
			saida.add(var.getId() + "-" + var.getNome());
		}
		return saida;
	}
Eu utilizo esses dois metodo para receber os ArrayCollection;
[Bindable]
        private var arrayCargo : ArrayCollection;
     
        public function carregaCombo():void{
        	Controlador.listarCargoCombo();
        }
        public function listaCargoBoxOk(event:ResultEvent):void{
        	arrayCargo = event.result as ArrayCollection;
        }
        public function ErroCarregarBox(event:FaultEvent):void{
        	Alert.show("Erro ao Carregar o ComboBox");
        }
        
        
        [Bindable]
		private var funcionario : ArrayCollection;
		
        public function listarFuncionarios():void{
		     Controlador.listarFuncionarioDatagrid();	
		}
		public function listaOK(event:ResultEvent){
			 funcionario = event.result as ArrayCollection;
		}
	    public function Erro(event:FaultEvent){
	         Alert.show("Erro ao Listar!");
	    }

2 Respostas

R

Opa,
Cara, sera que esta chamando a function certa?
posta o codigo ae que fica mais facil…

marcosFA

É, coloca mais info de como está povoando a DataGrid. Por enquanto não da pra ter muita ideia não…

Abs,

Criado 12 de outubro de 2010
Ultima resposta 18 de out. de 2010
Respostas 2
Participantes 3