Grails paginating multiple tables
pagination paginate (3)
Aquí hay un ejemplo que usa parámetros adicionales en la etiqueta de paginación. Foo y Bar son dos clases de dominio con un "nombre" de propiedad String. Creé 50 de cada uno en Bootstrap.groovy.
PageController.groovy:
class PageController {
def index = {
if (params.paginate == ''Foo'') {
def fooPagination = [max: params.max, offset: params.offset]
session.fooPagination = fooPagination
} else if (params.paginate == ''Bar'') {
def barPagination = [max: params.max, offset: params.offset]
session.barPagination = barPagination
}
def barList = Bar.list(session.barPagination ?: [max: 10, offset: 0])
def fooList = Foo.list(session.fooPagination ?: [max: 10, offset: 0])
//This is to stop the paginate using params.offset/max to calculate current step and use the offset/max attributes instead
params.offset = null
params.max = null
[fooList: fooList, totalFoos: Foo.count(), totalBars: Bar.count(), barList: barList]
}
}
index.gsp:
<html>
<head>
<title>Multi Pagination Example</title>
<meta name="layout" content="main"/>
<style type="text/css" media="screen">
h2 {
margin-top: 15px;
margin-bottom: 15px;
font-size: 1.2em;
}
</style>
</head>
<body>
<table>
<tr>
<td>
<h2>Foo</h2>
<table>
<tr>
<th>Name</th>
</tr>
<g:each in="${fooList}">
<tr><td>${it.name}</td></tr>
</g:each>
<tr>
<td class="paginateButtons">
<g:paginate total="${totalFoos}" max="10" offset="${session.fooPagination?.offset}" params="${[paginate:''Foo'']}"/></td>
</tr>
</table>
</td>
<td>
<h2>Bar</h2>
<table>
<tr>
<th>Name</th>
</tr>
<g:each in="${barList}">
<tr><td>${it.name}</td></tr>
</g:each>
<tr>
<td class="paginateButtons">
<g:paginate total="${totalBars}" max="10" offset="${session.barPagination?.offset}" params="${[paginate:''Bar'']}"/></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
aclamaciones
Sotavento
Estoy tratando de paginar a través de 2 tablas en 1 gsp usando 2 g: etiquetas de paginación. Al presionar el botón de paginación en 1 tabla, se colocan las dos tablas, ya que ambas etiquetas de paginación usan los mismos parámetros ''max'' y ''offset''. ¿Cómo puedo paginar a través de 1 tabla sin paginar la otra tabla?
Gracias por adelantado.
La paginación de Grails es completamente inútil para la paginación múltiple en una página, ya que no se puede pasar en el máximo personalizado y compensar como atributo. Esta es la razón por la cual
def offset = params.int(''offset'') ?: 0
def max = params.int(''max'')
Y la documentación le dice "max (opcional) - El número de registros para mostrar por página (por defecto es 10). Se usa SÓLO si params.max está vacío" ¿QUÉ? ¿Cuál es el significado de crear algo que no puedo controlar? Buena forma de programación: déjame ingresar mis variables o darme opciones, ¡luego usa tus valores predeterminados!
También puede usar el complemento de paginación remota , que hace exactamente el mismo trabajo. Aclamaciones.