Múltiplos formulário mestre/detalhe e tabs do bootstrap

505 views
Skip to first unread message

Fabiano Almeida

unread,
Apr 6, 2016, 4:58:00 PM4/6/16
to web2py-us...@googlegroups.com
Boa tarde,

Seguindo as dicas de outras threads, montei a seguinte tela mestre/detalhe  usando tabs do bootstrap:

controller cadastro.py:
def pessoa():
  return dict(form=SQLFORM.grid(db.pessoa), id=int(request.args(0)))
def pessoa_notas():
  return dict(formn=SQLFORM.grid(db.p_notas.pessoa==id_pessoa, args=[id_pessoa]))
def pessoa_funcoes():
  return dict(formf=SQLFORM.grid(db.p_funcoes.pessoa==id_pessoa, args=[id_pessoa]))
def pessoa_arquivos():
  return dict(formp=SQLFORM.grid(db.p_arquivos.pessoa==id_pessoa, args=[id_pessoa]))


view pessoa.html:
{{extend 'layout.html'}}
<h1>Cadastro de pessoa</h1>
<div class="container">
  <ul class="nav nav-tabs">
    <li class="active"><a data-toggle="tab" href="#home">Dados Pessoais</a></li>
    <li><a data-toggle="tab" href="#menu1">Funções</a></li>
    <li><a data-toggle="tab" href="#menu2">Notas</a></li>
    <li><a data-toggle="tab" href="#menu3">Arquivos</a></li>
  </ul>
  <div class="tab-content">
    <div id="home" class="tab-pane fade in active">
      {{=form}}
    </div>
    <div id="menu1" class="tab-pane fade">
      {{=LOAD(f='pessoa_funcoes', args=[id])}}
    <div id="menu2" class="tab-pane fade">
      {{=LOAD(f='pessoa_notas', args=[id])}}
    </div>
    <div id="menu3" class="tab-pane fade">
      {{=LOAD(f='pessoa_arquivos', args=[id])}}
    </div>
  </div>
</div>


view pessoa_funcoes.html:
{{=formf}}

view pessoa_arquivos.html:
{{=forma}}

view pessoa_notas.html:
{{=formn}}

Entrar em app/cadastro/pessoa/1 resulta em tela com as 4 abas para exibir os dados do cadastro de id==1 em db.pessoa. Na primeira aba, que tem o SQLFORM(db.pessoa), sempre exibe corretamente, o problema é nas outras 3 abas:
  • nas abas 2 e 3 (Funções e Notas), que são SQLFORM.grid's mostra os dois form's simultaneamente, como se no código da div correspondente estivesse com dois {{=LOAD}}
  • na aba 4 (Arquivos), que também é um SQLFORM.grid com campo tipo upload, nem chega a renderizar o form correspondente, exibe ou o form de db.pessoa, ou o form de db.p_funcoes

Algum sugestão de como resolver isto?

Grato pela atenção,

Fabiano.

Carlos Costa

unread,
Apr 7, 2016, 7:58:18 AM4/7/16
to web2py-us...@googlegroups.com
Não há suporte para multiplos grids em uma view. Tem um pouco de explicação aqui
e aqui

Acho que também foi falha minha no outro post que esqueci de dizer que você tem que passar ajax=True na LOAD.
Usando ajax ou iframe será possível utilizar múltiplos grids.
Porém forms com campo uploads serão exibidos mas não irão funcionar via ajax. E isso não é limitação do web2py.


--
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.



--


Carlos J. Costa
Cientista da Computação  | BS Computer Science
Esp. Gestão em Telecom   |
PgC Telecom Mangement
<º))><

Fabiano Almeida

unread,
Apr 7, 2016, 11:43:04 AM4/7/16
to web2py-us...@googlegroups.com
Obrigado Carlos pela explicação! Vou fazer testes aqui.

Grato,

Fabiano.

Adriano Marinho

unread,
Apr 26, 2016, 5:12:13 PM4/26/16
to web2py-users-brazil
Boa tarde Fabiano.

Provavelmente você já resolveu o problema das Tabs.

Sou iniciante e estava estudando o seu código e percebi que estava simplesmente faltando fechar uma </div>

 <div id="menu1" class="tab-pane fade">
      {{=LOAD(f='pessoa_funcoes', args=[id])}}

Testei e está Funcionando...!

Adriano
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@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-brazil+unsub...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages