Erro de paginação com uma lista customizada
11/04/2012 14:09
0
Olá. Estou cm um problema simples e chato ao mesmo tempo. Preciso pegar determinados registros de uma lista vinda do banco sempre que acesso uma página. Quando recebo a listagem do inventario faço, dentro de um laço, as comparações necessárias, atualizo uma determinada coluna e vou inserindo os registros que quero numa nova lista. Lembrando que no banco a coluna que quero está vazia, então eu preciso fazer isso on-the-fly. Segue o código:

def inventarioList = Inventario.list()
def inventarioSize = inventarioList.size()

//lista de inconformidades
List inconformidadeList = []
Inventario item
for (int i = 0; i< inventarioSize; i++){
if (item.setor_original!=item.setor_coletado)
{
item.inconformidade=1
inconformidadeList.add(item)
}
}

[inventarioInstanceList: inconformidadeList , inventarioInstanceTotal: inconformidadeListTotal, params:params]


O problema é quando envio de volta a lista a paginação fica errada. São retornados um pouco menos de 600 registros, o que está correto, mas são listados do primeiro ao ultimo da lista de uma vez só. E lá em baixo são mostradas as 18 páginas.

Por que a lista não está sendo quebrada? Isso nao ocorre quando retorno Inventario.list() diretamente.

Abs.
Tags: Listas, List, Paginação


0
Esqueci de adicionar. No inicio da action estou usando os seguintes parametros:

if(!params.max) params.max = 30
if(!params.offset) params.offset = 0
11/04/2012 14:13


0
ola marcus geralmente eu uso uma consulta com filtros onde passo os parâmetro da consulta para meu controlador e retorno o resultado para a tela

ex: de uma consulta minha no controlador


def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
String q = "%${params.q?:""}%".toUpperCase()
String query = "from Fisica f where upper(f.nome) like :q or upper(f.cpf) like :q or upper(f.rg) like :q or upper(f.descricao) like :q or upper(f.observacao) like :q"
def total = Fisica.executeQuery("select count(*) "+query, [q:q])[0] ?: 0
query += params.sort ? " order by $params.sort ${params.order ?: ''}":""
def list = Fisica.findAll(query, [q:q], params)
[fisicaInstanceList: list, fisicaInstanceTotal: total]
}

na paginacao voce passa os parametros tbm


ex: <g:paginate total="${fisicaInstanceTotal}" params="[q:params.q]"/>


espero ter ajudado
12/04/2012 11:45



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto