Popular datagrid

3 respostas
W

Ola a todos estou tentando fazer um exemplo de conexao com flex+java+postgresql porem ja fiz tudo certinho tenho confirmação que estou conectando ao banco lendo o mesmo tudo ok porem nao preenche o datagrid ja revisei varia e varias vezes o codigo e nao acho erro algum sera que alguem por favor poderia dar uma olhada e me dar uma luz no fim do tunel.
Desde ja agradeço a todos.

Class servico_java
package br.com.wagner;

import javax.swing.JOptionPane;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class servico_java {
    
    @SuppressWarnings("unchecked")
    public List listar_pessoas()
    {
        
        List lista_pessoas = new ArrayList();
        String driver = "org.postgresql.Driver";
         String url = "jdbc:postgresql://localhost:5432/flex";
         String usuario = "postgres";
         String senha = "123456";
         Connection conexao;
         Statement statement;
         ResultSet resultset;
         try
           {
               Class.forName(driver);
               conexao = DriverManager.getConnection(url,usuario, senha);            
              JOptionPane.showMessageDialog(null,"conectou com sucesso");
              statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
              resultset = statement.executeQuery("select * from pessoas");
              while (resultset.next())
            {
                  
            HashMap hashmap_pessoas = new HashMap();
            hashmap_pessoas.put("pes_codigo", resultset.getString("pes_codigo"));
            hashmap_pessoas.put("pes_nome", resultset.getString("pes_nome"));
            hashmap_pessoas.put("pes_endereco", resultset.getString("pes_endereco"));
            hashmap_pessoas.put("pes_email", resultset.getString("pes_email"));
            lista_pessoas.add(hashmap_pessoas);
        
        }
      
           }
           catch(ClassNotFoundException Driver)
           {
               JOptionPane.showMessageDialog(null, "Driver do banco  foi localizado: "+Driver);
           }
           catch(SQLException Banco)
           {
               JOptionPane.showMessageDialog(null, "Erro de  do banco: "+Banco);
           }
           return lista_pessoas;
    }
    
    }
aplication.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:RemoteObject id="java_servico" destination="java_servico"  fault="faultservico(event)">
    	<mx:method name="listar_pessoas" result="resultado_tabela" fault="faultservico(event)"/>
 	 </mx:RemoteObject>
 	 <mx:Script>
 	 	<![CDATA[
 	 		import mx.controls.Alert;
 	 		import mx.rpc.events.FaultEvent;
 	 		import mx.rpc.events.ResultEvent;
 	 		import mx.collections.ArrayCollection;
 	 				
 	 		[Bindable]
 	 			private var dados_pessoas:ArrayCollection;
 	 		 	 		
 	 		public function listar_pessoas():void
 	 		{
 	 			java_servico.listar_pessoas();
 	 		}
 	 		public function resultado_tabela(event:ResultEvent):void
 	 		{
 	 			dados_pessoas = event.result as ArrayCollection;
 	 		}
 	 			{
 	 			public function faultservico(event:FaultEvent)
 	 				{
 	 				Alert.show("erro ="+event.fault.faultString);
 	 				}
 	 			}
 	 		
 	 	]]>
 	 </mx:Script>


	<mx:Panel x="10" y="10" width="869" height="393" layout="absolute">
	
		<mx:Button x="40" y="10" label="Funciona !!!!!!!!!!!aa" click="{listar_pessoas()}" width="232" height="88"/>
		<mx:DataGrid x="40" y="106" width="550" id="datagrid_pessoas" dataProvider="{dados_pessoas}">
			<mx:columns>
				<mx:DataGridColumn headerText="Codigo" dataField="pes_codigo"/>
				<mx:DataGridColumn headerText="Column 2" dataField="pes_nome"/>
				<mx:DataGridColumn headerText="Column 3" dataField="pes_endereco"/>
				<mx:DataGridColumn headerText="Column 5" dataField="pes_email"/>
			</mx:columns>
		</mx:DataGrid>
		
	</mx:Panel>
	
</mx:Application>

3 Respostas

F

Wagner,
HashMap do Java chega no Flex / AS3 como Array.
Acredito q trocar isso:

por isso funcione:
Como vem Array o as ArrayCollection retorna null, mas mesmo assim vc não terá um resultado q precisa, pq vc terá um ArrayCollection com quatro objetos e não um objeto com quatro propriedades.

 uma debugada.
Veja mais: [url]http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_2.html[/url]

[]s

G

Dá uma verificada se este evento click do botão está chamando realmente o método listar_pessoas, só pra gente tirar da dúvida aí.Põe um alert dentro do método…
aparentemente o código está ok.

W

obrigado a todos porem acabei resolvendo da seguitne forma esqueci de mencionar o (event) no resultado_tabela…

exemplo abaixo

codigo com erro

<mx:RemoteObject id="java_servico" destination="java_servico"  fault="faultservico(event)">
    	<mx:method name="listar_pessoas" result="resultado_tabela" fault="faultservico(event)"/>
 	 </mx:RemoteObject>

codigo corrigido

<mx:RemoteObject id="java_servico" destination="java_servico"  fault="faultservico(event)">
    	<mx:method name="listar_pessoas" result="resultado_tabela(event)" fault="faultservico(event)"/>
 	 </mx:RemoteObject>
Criado 17 de novembro de 2010
Ultima resposta 18 de nov. de 2010
Respostas 3
Participantes 3