jQuery Grid Plugin – JSP

Estoy de regreso…

En los últimos 3 meses estuve trabajando en un proyecto, una aplicación web. Uno de los puntos fue la elección del Grid a utilizar para la visualización de datos.

Decidí utilizar jqGrid un plugin mas JQuery, en realidad es muy funcional y practico en cuanto a código se refiere .

Hoy traigo una simple manera de implementar este Grid con JSP y JSON:

Ya que se ha descargado el plugin de la pagina de descargas iniciamos con la implementación.

Se intenta que logres algo parecido a este ejemplo:

De dahico

La declaración del Grid entre las etiquetas HEAD.

<script type=”text/javascript”>
$().ready(function() {
var windowWidth = (document.documentElement.clientWidth – 100) /1.2;

jQuery(“#gridUsuarios”).jqGrid({
url:’getGriddahico.jsp’,
datatype: “json”,
colNames:['id_Usuario','Usuario','Email','Fecha/Hora'],
colModel:[
{name:'id',index:'id_Usuario', width:10, hidden:true},
{name:'Usuario',index:'usuario_Usuarios', width:150},
{name:'Email',index:'email_Usuarios', width:350},
{name:'Fecha/Hora',index:'timestamp_Usuairo', width:150},
],
rowNum:10,
rowList:[10,20,30],
multiselect: true,
pager: ‘#pagGrid’,
sortname: ‘id_Usuario’,
viewrecords: true,
sortorder: “desc”,
width: windowWidth,
height: “100%”,</code>
// nSelectRow: Evento,
caption:”dahicotux.wordpress.com”
});

jQuery(“#gridUsuarios”).jqGrid(‘navGrid’,'#pagGrid’,{edit:false,add:false,del:false});

});
</script>

Y entre las etiquetas BODY no es necesario nada mas que crear un tabla con ID con el que declaramos el Grid en este caso #gridUsuarios y un DIV  para el área de la paginación en este caso #pagGrid.

<div>
<table id=”gridUsuarios”></table>
<div id=”pagGrid”></div>
</div>

Ahora vamos a trabajar el codigo de lado del servidor en este caso sera una pagina JSP la cual ya esta declarada como parámetro url en el grid  url:’getGriddahico.jsp’.

<%–
Document   : getGriddahico
Created on : 4/02/2010, 11:00:58 PM
Author     : @dahico
–%>

<%@page import=”java.sql.*” %>
<%@page import=”app.classes.conexion” %>

<%
int start=0;
int total=0;
int total_pages =0;

int intpage = new Integer(request.getParameter(“page”));
int limit = new Integer(request.getParameter(“rows”));

String sidx = request.getParameter(“sidx”);
String sord = request.getParameter(“sord”);

String strQuery=”";
String json =”";

boolean rc;

ResultSet rs = null;

if(sidx ==”"){
sidx =”1″;
}

//Conexión a la base de datos
conexion  conexiondb = new conexion();
conexiondb.Conectar();

total = conexiondb.countRec(“id_Usuario”, “tbl_Usuario”);

if( total>0 ) {
double d = Math.ceil( (double)(total) / (double)(limit) );
total_pages = (int)(d);
} else {
total_pages = 0;
}

if (intpage > total_pages) {
intpage=total_pages;
}

start = limit * intpage – limit;

if(start < 0 ){
start = 0;
}

strQuery = “SELECT * FROM tbl_Usuario ORDER BY “+sidx + ” ” +sord +” LIMIT “+start+” , “+limit;

rs = conexiondb.Consulta(strQuery);

total = conexiondb.countRec(“id_Usuario”, “tbl_Usuario”);

response.setContentType(“text/x-json”);
response.setCharacterEncoding(“utf-8″);
response.setHeader(“Pragma”, “no-cache”);
response.setHeader(“Cache-Control”, “no-cache, must-revalidate”);
response.setHeader(“Pragma”, “no-cache”);

json =”";
json = json + “{\n”;
json = json + ” \”page\”:\”"+intpage+”\”,\n”;
json = json + “\”total\”:”+total_pages+”,\n”;
json = json + “\”records\”:”+total+”,\n”;
json = json + “\”rows\”: [";
rc =false;

while(rs.next()){

if(rc){
json = json + ",";
}
json = json + "\n{";
json = json + "\"id\":\""+rs.getInt("id_Usuario")+"\",";
json = json + "\"cell\":["+rs.getInt("id_Usuario")+"";
json = json + ",\""+rs.getString("nombre_Usuario")+"\"";
json = json + ",\""+rs.getString("email_Usuario")+"\"";
json = json + ",\""+rs.getString("timestamp_Usuario")+"\"]“;
json = json + “}”;

rc=true;
}
json = json +”]\n”;

json = json +”}”;

out.print(json);
out.close();

%>

Para este ejemplo utilice una tabla en Mysql con la siguiente estructura:

CREATE TABLE `dahicotux`.`tbl_Usuario` (
`id_Usuario` INT  NOT NULL,
`nombre_Usuario` VARCHAR(10)  NOT NULL,
`email_Usuario` VARCHAR(150)  NOT NULL,
`timestamp_Usuario` TIMESTAMP  NOT NULL,
PRIMARY KEY (`id_Usuario`)
)
ENGINE = MyISAM;

Esta es solo una manera de implementar el Grid, les recomiendo leer la documentación para aprovechar al máximo sus funcionalidades.

Por ahora esto es todo, en lo próximos días espero profundizar en el tema ya que no se sabe cuando necesitaras un grid.

Advertisement

Acerca de david
Lic. Informática con interés en Tecnologías libres.

6 Responses to jQuery Grid Plugin – JSP

  1. Pipe.- dice:

    Hola man…
    La verdad se ve bueno, peor no consigo reproducirlo.
    He visitado las paginas a las que haces mencion y no condigo nada. He googleado por algo que me muestre una grilla con jso y jQuery… y nada. Creo que el problema es my html he puesto le que dices pero nada.
    Ojala puedas ayudarme en esto man…
    Desde ya muchas gracias

    • david dice:

      Claro que si…. ahora mismo estoy realizando un plugin basado en este grid.. ahora esta un muy primitivo pero funcional. Ya lo publicare.

      Por lo pronto puedo ayudarte a implementar este plugin. puedes seguirme en twitter @dahico para definir un medio para coordinarnos

      Saludos y Gracias por Visitar el Blog.

  2. HaroldV dice:

    Amigo e puesto en practica todo lo que colocastes alli y hasta cosas de mas sera que Podrias Ayudarme si puedes agregame al msn te agregue al twitter pero no me respondes =/ mi msn es harold_taurus@hotmail.com

  3. Carlos dice:

    Muy bueno, me corrió. La cuestión es que no puedo borrar filas o editar, me sale error, como se hace para activar esto?

  4. Nicolas dice:

    Muy buen ejemplo, voy a probarlo pq estoy haciendo algo similar.
    Una consulta, en vez de declarar el json como String, no seria mejor usar un StringBuffer ?

    Muchas gracias por el aporte!

  5. Mario dice:

    ¿Puedes poner este ejemplo en un proyecto para descargar? He intentado seguir los pasos pero no hay manera de hacerlo funcionar. Sobre todo he tenido que cambiar la codificacion en los JSP a UTF-8 ya que no me dejaba guardar.

    Gracias, un saludo.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.