Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/08/2010, 09:17
Avatar de lukos
lukos
 
Fecha de Ingreso: enero-2008
Ubicación: ikikin
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
De acuerdo Respuesta: Crear DataGrid en JSP

Hola
Mira hace poco hice algo así (highlight en C++, pero es java ):
Código C++:
Ver original
  1. //clase1.java
  2. ResultSet rs = query.executeQuery("select * from pendientes");
  3.                 rs.afterLast();
  4.                 Boolean seguir=rs.previous();
  5.                 while(seguir){
  6.                     respuesta= respuesta + rs.getString(1)+ "#" +rs.getString(2)+ "#" +rs.getString(3)+ "#" + rs.getString(4)+ "#" +rs.getString(5)+ "@";
  7.                     seguir=rs.previous();
  8.                 }
  9.                 rs.close(); query.close(); conexion.close();
Y la respuesta era algo como esto (siguiendo a id, ip, requerimiento, archivo, fecha ):
Cita:
101#192.168.1.190#hardware#C:\infoextra.txt#2010-05-16@
El "@" es para terminar la línea, en caso que tengas más de 1.
Una vez que tenía todo el resultado, quedaba guardado en la variable respuesta, y ésta la enviaba a:
Código C++:
Ver original
  1. //clase2.java
  2. private String respuestaXML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
  3. private String Pendientes(String cadena){
  4.         Boolean v=true;
  5.         try{
  6.             String [] temp = cadena.split("@");
  7.             for (String algo : temp){
  8.                 String [] temp1 = algo.split("#");
  9.                 if (v) {
  10.                     cuerpo ="<orden id=\""+temp1[0]+"\"><ip>"+temp1[1]+"</ip>"+"<req>"+
  11.                             temp1[2]+"</req><arch>"+temp1[3]+"</arch><fecha>"+temp1[4]+"</fecha></orden>";
  12.                     v=false;
  13.                 }else{
  14.                     cuerpo =cuerpo+"<orden id=\""+temp1[0]+"\"><ip>"+temp1[1]+"</ip>"+"<req>"+
  15.                             temp1[2]+"</req><arch>"+temp1[3]+"</arch><fecha>"+temp1[4]+"</fecha></orden>";
  16.                 }
  17.             }
  18.             this.respuesta = "<OrdenesPendiente>"+cuerpo+"</OrdenesPendiente>";
  19.         }catch(Exception e){
  20.             this.respuestaXML = e.toString();
  21.         }
  22.         return this.respuestaXML + this.respuesta;
  23.     }
De esta forma, recorres el string hasta encontrar el "@" (para abrir un padre), y separas cada pedazo en un string menor. Haces lo mismo, pero hasta encontrar el "#" (para el hijo) y luego ya separas tal cual.
Devuelves el resultado y te queda algo así:

Código XML:
Ver original
  1. <OrdenesPendiente>
  2.   <orden id="4">
  3.     <ip>192.168.13.154</ip>
  4.     <req>Otro</req>
  5.     <arch>System.Web.DynamicData.dll</arch>
  6.     <fecha>2010-08-19</fecha>
  7.   </orden>
  8.   <orden id="5">
  9.     <ip>192.168.1.197</ip>
  10.     <req>Hardware</req>
  11.     <arch>ruta</arch>
  12.     <fecha>2010-08-23</fecha>
  13.   </orden>
  14. </OrdenesPendiente>

Y todo esto lo llamas desde un js.
Código Javascript:
Ver original
  1. function leePendientes(){
  2.     if (oXML.readyState==4) {
  3.         try{
  4.             var xml = oXML.responseXML;
  5.             var cant = xml.getElementsByTagName('orden').length;
  6.             var respuesta = "<table id=\"pendientes\" class=\"tablesorter\" ><thead><tr><th>ID</th><th>IP</th><th>Requerimiento</th>"+
  7.                 "<th>Archivo Adjunto</th><th>Fecha</th></tr></thead><tbody>";
  8.             var semiResp;
  9.             for(i=0;i<cant;i++){
  10.                 var resp = "<tr>";
  11.                 var id = xml.getElementsByTagName('orden').item(i).getAttribute('id');
  12.                 resp = resp + "<td onClick=\"RoA("+id+")\">"+ id + "</td>";
  13.                 resp = resp + "<td>"+ xml.getElementsByTagName('ip')[i].firstChild.data + "</td>";
  14.                 resp = resp + "<td>"+ xml.getElementsByTagName('req')[i].firstChild.data + "</td>";
  15.                 resp = resp + "<td>"+ xml.getElementsByTagName('arch')[i].firstChild.data + "</td>";
  16.                 resp = resp + "<td>"+ xml.getElementsByTagName('fecha')[i].firstChild.data + "</td>";
  17.                 resp = resp + "</tr>";
  18.                 if (i==0) {
  19.                     semiResp = resp;
  20.                 }else{
  21.                     semiResp = semiResp + resp;
  22.                 }
  23.             }
  24.             document.getElementById('content_2').innerHTML = respuesta + semiResp + "</tboby>";
  25.             try{
  26.                 $("#pendientes").tablesorter({headers: {0:{sorter: false}, 1:{sorter: false}, 3:{sorter: false}}, widgets: ['zebra']});
  27.             }catch(e){
  28.                 alert(e.toString());
  29.             }
  30.         }catch (e){
  31.             alert(e.toString());
  32.         }
  33.     }else{
  34.         document.getElementById('content_2').innerHTML = '<b>Cargando..</b>';
  35.     }
  36. }

Y listo Es cosa que lo adaptes a lo que quieres hacer.
Para la grilla puedes usar [URL="http://tablesorter.com"]tablesorter[/URL] viendo los tutos en la misma web