Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Tela de filtro

21 de Junho de 2012, 8:43 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 0 vezes

Bom dia!

 Alguém poderia me informar como faço para colocar filtros em uma tela de listagem acessando o banco de dados? 

Obrigado 

Autor: Gerfferson Santos


44 comentários

  • 9f159760ac31827536e919ea42ec652a?only path=false&size=50&d=404Gerfferson Santos(usuário não autenticado)
    21 de Junho de 2012, 15:29

     

    Será que alguém poderia me ajudar? Se não foi claro, perdão, mas o que eu preciso é saber como adicionar um campo para poder passar como parâmetro na consulta e popular o grid com o resultado da mesma.

     Obrigado, 

    • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
      22 de Junho de 2012, 22:57

       

      Gerfferson,

      existem algumas maneiras de fazer isso, vou dar o exemplo da mais comum.

      Primeiro voce precisa criar na sua classe DAO referente à tabela que vai alimentar o gride, uma função que receberá como parametro o(s) campo(s) que comporão a clausula where da consulta.

      Depois adicionar no formulário os campos para o usuário preencher com os valores;

      Vamos supor que foi criado o campo uf  no formulário e a a função selecioneMunicipioPorUf($uf=null); na classe DAO do municipio, então, na criação do gride você pode colocar assim:

      $gride = new TGrid('gdMunicipios','Município(s)',MunicipioDAO::selecioneMunicipioPorUf($frm->get('uf')),.....);

      Abraço.

      • 4210951d8ebd1c937e4efe1938358d3f?only path=false&size=50&d=404Leandro Santos(usuário não autenticado)
        29 de Junho de 2012, 13:36

         

        Estou tentando incluir um filtro de países na aba de listagem do meu form, mas não está funcionando.

        $pc->addPage('Listagem');
        $frm->addTextField('pesq_no_pais','Pesquisa de País:',30,false);
        $frm->addHtmlField('html_gride','Aqui será carregado o gride');
        $frm->processAction();
        //$g = new TGrid('gd','Listagem dos Países',Tb_paisDAO::selectAll('no_pais'),null,null,'co_pais');
        $g = new TGrid('gd','Países',Tb_paisDAO::selectAll($frm->get('pesq_no_pais')),null,null,'co_pais');
        $g->addColumn('co_pais'    ,'Código');
        $g->addColumn('no_pais'    ,'Nome');
        $frm->set('html_gride',$g);
        $frm->show();

        Acredito que o problema é que após digitar o nome no campo de pesquisa deveria carregar novamente o grid, como eu poderia fazer isso?

        • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
          30 de Junho de 2012, 22:27

           

          Leandro,

          Você está passando o nome do pais no parametro errado, tem que ser o segundo parametro do método selectAll(), o primeiro é a coluna para ordenar.

          Tente assim:

          $g = new TGrid('gd','Países',Tb_paisDAO::selectAll(null,"no_pais ='".$frm->get('pesq_no_pais')."'"),null,null,'CO_PAIS');

          Para você atualizar o gride (sem ajax)  terá que adicionar um botão para submeter o formulário após informar o pais desejado. Exemplo:

          $frm->addTextField('pesq_no_pais','Pesquisa de País:',30,false);

          $frm->addButton('Pesquisar','atualizar_gride','btnPesquisar',null,null,false,false);

          ...

          Coloquei hoje nos exemplos do FormDin, como fazer o CRUD utilizando requisições ajax, vale a pena dar uma olhada para você utilizar ajax ai nesta situação.

          Abraço.

Essa comunidade não possui posts nesse blog