Formulário de Consulta e Paginação

115 views
Skip to first unread message

Cláudio Torcato

unread,
Jun 6, 2013, 8:05:51 AM6/6/13
to web2py-users-brazil
Pessoal,

A maioria dos exemplos de paginação que tenho visto, não mostra como utilizar um formulário de consulta junto com a paginação.

Estou usando o módulo de paginação do web2py_utils. Alguém tem algum exemplo a oferecer de uma paginação que use o resultado de uma query de formulário?

Obrigado.

--
"Não sou eu quem cria a mim mesmo, e sim eu aconteço para mim mesmo."
-- Carl G. Jung, psicólogo

Vinicius Assef

unread,
Jun 6, 2013, 8:12:57 AM6/6/13
to web2py-us...@googlegroups.com
Aqui: http://www.web2pyslices.com/slice/show/1623/pagination-with-limitby

2013/6/6 Cláudio Torcato <claudio...@gmail.com>:
> --
> Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
> Para enviar uma mensagem ao grupo, envie email a:
> web2py-us...@googlegroups.com
> Para se desinscrever, envie email a:
> web2py-users-br...@googlegroups.com
> Para mais opções, visite o site do grupo em:
> http://groups.google.com/group/web2py-users-brazil?hl=en
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo
> "web2py-users-brazil" dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para web2py-users-br...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>

Cláudio Torcato

unread,
Jun 6, 2013, 8:17:59 AM6/6/13
to web2py-users-brazil
Este exemplo Vinicius, também não possui um formulário de consulta. A query já está prédefinida.

Vinicius Assef

unread,
Jun 6, 2013, 8:34:13 AM6/6/13
to web2py-us...@googlegroups.com
Mostre seu código e diga qual sua dificuldade.
Assim fica + fácil ajudar. ;-)

2013/6/6 Cláudio Torcato <claudio...@gmail.com>:

Cláudio Torcato

unread,
Jun 6, 2013, 8:43:26 AM6/6/13
to web2py-users-brazil
É claro, meu caro.

from web2py_utils.paginate import Pagination

# controller

def index():
    focus = SCRIPT('document.forms[0].elements[0].focus();',type='text/javascript')
    form = SQLFORM.factory(
        Field('cpf', label='CPF'),
        Field('nome')
    )
    form[0].insert(-1, focus)
    query = db.clientes.id<0
    orderby = db.clientes.nome
    pcache = (cache.ram, 15)
    if form.process(onsuccess='').accepted:
        queries = []
        if form.vars.cpf:
            queries.append(db.clientes.cpf == form.vars.cpf)
        if form.vars.nome:
            queries.append(db.clientes.nome.like(form.vars.nome + "%"))
        if queries:
            query = reduce(lambda a,b:(a&b),queries)
    paginate = Pagination(db, query, orderby,
        display_count=3, cache=pcache, r=request,
        res=response)
    grid = paginate.get_set(set_links=True)
    return dict(form=form, grid=grid)


# view

{{left_sidebar_enabled,right_sidebar_enabled=False,('message' in globals())}}
{{extend 'layout.html'}}

<a href="{{=URL('Clientes','default','cadastro')}}">Cadastro</a>

{{=form}}

<table>
    <tr>
        <th>CPF</th>
        <th>Nome</th>
    </tr>
    {{ for i, cliente in enumerate(grid): }}
        <tr>
            <td>{{=cliente.cpf}}</td>
            <td>{{=cliente.nome}}</td>
        </tr>
    {{ pass }}
</table>

{{ include 'aula03/paginate.html' }}

{{paginate()}}

Vinicius Assef

unread,
Jun 6, 2013, 8:50:15 AM6/6/13
to web2py-us...@googlegroups.com
Claudio, cole num pastebin e comente no código aonde você encontra
dificuldades e o que você quer fazer.

2013/6/6 Cláudio Torcato <claudio...@gmail.com>:

Cláudio Torcato

unread,
Jun 6, 2013, 8:56:11 AM6/6/13
to web2py-users-brazil
Basicamente, o problema é que após a consulta, o resultado paginado é exibido corretamente. O problema ocorre ao navegarmos nessa paginação, pois o grid virá vazio.

Nos exemplos sem um formulário que gere a query de consulta, todos eles possuem uma query sempre definida, por isso a paginação funciona. No caso de um formulário, quando navegamos na paginação, perdemos a query que o formulário criou.

Vinicius Assef

unread,
Jun 6, 2013, 1:59:58 PM6/6/13
to web2py-us...@googlegroups.com
Tente guardar a query original na session e reaproveitá-la se não mudar.

Ou passá-la como query string na URL.

2013/6/6 Cláudio Torcato <claudio...@gmail.com>:

Cláudio Torcato

unread,
Jun 6, 2013, 4:49:46 PM6/6/13
to web2py-us...@googlegroups.com

Havia testado a ideia da session. Não funcionou.

Vou testar a outra ideia.

Em 06/06/2013 15:00, "Vinicius Assef" <vinic...@gmail.com>escreveu:

Tente guardar a query original na session e reaproveitá-la se não mudar.

Ou passá-la como query string na URL.

2013/6/6 Cláudio Torcato <claudio...@gmail.com>:

> Basicamente, o problema é que após a consulta, o resultado paginado é

> exibido corretamente. O pr...

Volney Casas

unread,
Aug 24, 2015, 8:58:55 PM8/24/15
to web2py-users-brazil
Alguém conseguiu alguma solução pra isso?
Estou passando pelo mesmo problema.

Jose Vicente Sousa

unread,
Aug 31, 2015, 11:15:19 PM8/31/15
to web2py-users-brazil
Eu uso o datatable via jquary. funciona uma belezinha

Ari Sobel

unread,
Sep 1, 2015, 12:55:14 PM9/1/15
to web2py googlegroups
Ola Jose, boa tarde,

Eu estava tentando usar o DataTables no web2py, e tive dificuldades em:
  • onde colocar o CSS e JS, da biblioteca DataTables;
  • como fazer trabalhar com Booststrap;
  • Como não conflitar com o Bootstrap padrão do web2py.
Existe uma versão de DataTables já adaptada a Boostrap (BS2) no site do DataTables [1].

Mas ele parece que entra em conflito com o include :

 {{include 'web2py_ajax.html'}}

perdendo a formatação Bootstrap.

Teria alguma receita de bolo pra o DataTables funcionar liso no web2py?
Você teria algo para nos mostrar?

Muito obrigado.


--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Volney Casas

unread,
Sep 3, 2015, 4:05:47 PM9/3/15
to web2py-users-brazil
Só funciona com tabelas né?
Eu tava tentando paginar uma galeria de imagens ( ͡° ͜ʖ ͡°)

Volney Casas

unread,
Sep 5, 2015, 3:17:37 PM9/5/15
to web2py-users-brazil
Então pessoal, consegui resolver aqui (por enquanto), está meio bagunçado e com código duplicado, mas é q ainda não deu tempo de arrumar bem.
Mas tá funcionando rsrs.

Fiz assim, no controller:
https://gist.github.com/volneyrock/781d3cad65b3b4240b1f

e na view:
https://gist.github.com/volneyrock/d9cc19a455e81376f18e

Reply all
Reply to author
Forward
0 new messages