jQuery Grid Plugin – JSP
febrero 10, 2010 6 comentarios
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.

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
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.
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
Muy bueno, me corrió. La cuestión es que no puedo borrar filas o editar, me sale error, como se hace para activar esto?
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!
¿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.