Buscar em outra tabela com Modal e SQLFORM.grid

214 views
Skip to first unread message

Adriano Marinho

unread,
May 3, 2016, 12:06:23 PM5/3/16
to web2py-users-brazil
Bom Dia a Todos.

Sou novo no grupo e também iniciante em programação Web.

Qual a melhor maneiras de buscar dados em outra tabela, por exemplo um buscar um cliente na view de pedidos.

A minha primeira ideia foi abrir um modal (Bootstrap) com um SQLFORM.grid para fazer a pesquisa na tabela cliente (até aí tudo bem)  minha dificuldade e de como selecionar um cliente e pegar seu id na view de pedidos.
Estou carregando através de LOAD.

def pesquisar_Cadastros():
    fields = (db.cadastros.nome,db.cadastros.razao)
    grid_cadastros = SQLFORM.grid(Cadastros,
            buttons_placement='left', 
            showbuttontext=False,
            fields=fields,
            deletable = False,
            editable = False,
            details=False,
            csv = False,
            formname="Pesquisar_cadastros",
            _class='web2py_grid',
            user_signature=False)
    return locals()  

Outra alternativa que pensei for de usar o Widgets autocomplete.widget, mas estou conseguindo somente pesquisar pelas iniciais. Como pesquisar em qualquer parte do campo.

Clientes.cadastroId.widget = SQLFORM.widgets.autocomplete(request,Cadastros.nome,id_field=Cadastros.id, 
                           min_length=2,keyword='_autocomplete_%(fieldname)s')

Acho que ainda estou pensando como Desktop, Existe alguma maneira mais fácil, talvez um widget próprio.

Desde de já agradeço a colaboração.

Adriano


Carlos Costa

unread,
May 3, 2016, 5:21:33 PM5/3/16
to web2py-us...@googlegroups.com
As vezes queremos mesmo fazer tudo que temos no desktop mas na web é um pouco diferente.
E as vezes não tem e a gente tem que fazer de outro jeito.
O básico do web2py é o <select> do html, vulgo combo no desktop.
Essa solução serve pra você?

--
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
<º))><

Adriano Marinho

unread,
May 3, 2016, 6:52:19 PM5/3/16
to web2py-users-brazil
Obrigado pela atenção Carlos.

Eu estava procurando uma alternativa para o select para quando necessitar de uma consulta em muitos dados, por exemplo uma tabela com mais de 4000 clientes.

Aproveitando, minha intenção é fazer um App para Força de Vendas, você acha que o Web2py é a escolha ideal.

Grato
Adriano

Carlos Costa

unread,
May 3, 2016, 7:19:48 PM5/3/16
to web2py-us...@googlegroups.com
Entendi. Então vai dar um pouco mais de trabalho. Mas você pode fazer de forma reutilizável.

Existem várias escolhas ideais. rsrs
Mas web2py com certeza é uma delas, principalmente pela facilidade de uso/aprendizagem.

Adriano

--
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 inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Carlos Costa

unread,
May 3, 2016, 7:31:15 PM5/3/16
to web2py-us...@googlegroups.com
Quanto a alternativa, é uma boa você usar o modal do bootstrap.

Eu fiz assim, criei uma view separada só com o modal pra ser incluída quando eu preciso
e um funções auxiliares pra chamar.

Isso na modal.html

<div class="modal fade" tabindex="-1" role="dialog" id="janela-modal">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body" id="regiao_form">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

<script>
    function show_modal(url, title){
        web2py_component(url, "regiao_form");
        $(".modal-title").html(title);
        $("#janela-modal").modal({keyboard:true});
    }

    function hide_modal(){
        $('#janela-modal').modal('hide')
    }

    }
</script>


Na view que eu preciso eu coloco
<include 'modal.html'>

quando precisar chamar, é só passar o url e o título que vai estar na modal.
show_modal({{=URL(.....)}}, 'titulo');
ou direto
show_modal('http:/....', 'titulo');

Espero que sirva pra dar um pontapé aí...
Vai postando as outras dúvidas que surgirem.

Adriano Marinho

unread,
May 3, 2016, 11:12:48 PM5/3/16
to web2py-users-brazil
Obridado novamente.

Até esse ponto, eu já havia conseguido fazer, inclusive seguindo dicas sua em outros posts.

Dentro do modal coloquei um SQLFORM.grid para fazer a busca.

Estou com dificuldade de compreender de como recuperar na view o cliente selecionado no modal e depois como passar para o controller para persistir na tabela pedidos.

O que está me faltando é uma base teórica sobre Web, mas fiquei tão facinado pelo Web2py e pynthon que acabei empolgando em ver as coisas funcionando.

Carlos Costa

unread,
May 4, 2016, 11:17:41 AM5/4/16
to web2py-us...@googlegroups.com
você pode adicionar um botão para selecionar um item no seu SQLFORM.gird com o argumento links

links=[dict(header='Selecionar', 
                                    body=lambda row: A(TAG.button(I(_class='glyphicon glyphicon-edit')),
                                                       _href='#', _onclick='selecionar(%s);' % row.id)]

(observe que eu estou passando o id do registro, mas pode ser outro campo.)

e implementar a função selecionar na sua view

function selecionar(id){
    $('#tabela_campo').value(id);
    hide_modal();
}

Uma solução bem simples e não testada hehe
Mas pode melhorar ela de várias formas.

--
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 inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Adriano Marinho

unread,
May 5, 2016, 1:43:55 PM5/5/16
to web2py-users-brazil
Carlos, muito obrigado

Está funcionando perfeitamente,

Adriano

Carlos Costa

unread,
May 5, 2016, 2:42:46 PM5/5/16
to web2py-us...@googlegroups.com
De nada!
Que bom!😀👍

--
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.
Reply all
Reply to author
Forward
0 new messages