Esta vez toca una pequeña explicación de un plugin útil y muy fácil de utilizar. Se trata de Remote Pagination, el cual ofrece los tags remotePaginate y remoteSortableColumn que permiten paginar y ordenar las columnas de forma remota.
Instalación
Para instalar el plugin simplemente ejecutad grails install-plugin remote-pagination
util:remotePaginate
Proporciona enlaces para paginar hacia adelante, hacia atrás y hacia páginas concretas sin recargar la página mediante llamadas ajax.
Para incluir la paginación, primero incluimos algo parecido a lo siguiente en el gsp.
<div id="datosPaginados"> <g:render template="datos"/> </div>Siendo _datos.gsp
<g:each in="${bookList}" var="book">
<p>${book.name}</p>
<util:remotePaginate controller="book" action="updateList" total="${Book.count()}" update="datosPaginados" max="10"/>
</g:each>Y también en un controlador incluimos la acción que devolverá el template con los nuevos datos. En params recibiremos, entre otros, params.offset, que es el que indica a partir de qué posición devolver los resultados. También recibiremos params.max, indicando el número máximo de elementos a devolver.def updateList = {
render template="datos",model:[bookList:Book.list(params)]
}Y con estos pasos tenemos una paginación remota de una clase de dominio.util:remoteSortableColumn
Proporciona funcionalidad para realizar ordenación por columnas sin necesidad de recargar la página.
Suponiendo que transformamos nuestro template
_datos.gsp para que muestre los nombres en formato tabla y queremos hacer que se puedan ordenar por el nombre, incluiríamos una etiqueta similar a esta.<util:remoteSortableColumn property="name" defaultOrder="desc" titleKey="book.name" update="datosPaginados" action="updateList"/>Con esto ya tendremos una cabecera de columna con un enlace a updateList que devolverá el template con los libros ordenados por el nombre (vendrá en
params.sort) en el orden que se reciba en params.order.En la página del plugin tenéis disponible todas las propiedades de estos dos tags.
Espero que os sirva este breve ejemplo.
Enjoy!


0 comentarios:
Publicar un comentario