Ir para o conteúdo

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

Grid com filtro Select

13 de Agosto de 2012, 22:36 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 135 vezes

Ola Pessoal,

Tentei de várias formas, mas ainda estou engatiando do FormDin. A ideia e simples estou fazendo um cadastro de Bairro onde deve ser especificado a cidade. A ideia ao selecionar uma cidade e logo após o salvamento o grid seja preenchido de acordo com a cidade selecionado. Estou enviado o layout da pagina e o meu código. Desde já agradeço atenção de todos.

 

<?php

// Cria a Instância do Objeto

$frm = new TForm('Cadastro de Bairro');

// Adicionar o campo hidden para a coluna chave da tabela.

$frm->addHiddenField('id');


// Adicionando abas ao formulário

// Criar instância do controlador de páginas

$pc = $frm->addPageControl('pc'); 

// Adicionar a pagina "Cadastro"

// a partir daqui, tudo que for adicionado ao form ficará dentro da aba até encontrar o metodo closeGroup();

$pc->addPage('Cadastro', true, true, 'abaCadastro'); 

// Adicionar o campo na aba cadastro

$frm->addSelectField('idcidade', 'Cidade: ', true, 'select * from tabcidade order by cidade');

$frm->addTextField('bairro', 'Bairro:', 100, true, 80);

// Adiciona os botões

$frm->addButton('Salvar', 'salvar', 'btnSalvar', null, null, true, false);

$frm->addButton('Limpar', 'limpar', 'btnLimpar', null, null, false, false);

$frm->addHtmlField('html_gride','Aqui será carregado o gride');

// processar as ações do diretório action/

$frm->processAction();


$res = TPDOConnection::executeSql('select tabbairro.id, cidade, bairro from tabbairro inner join tabcidade on tabbairro.idcidade = tabcidade.id Order by cidade, bairro');


// criarção do gride

$g = new TGrid(

'gd' // id do gride no html

,'Listagem das Cidades' // titulo do gride

//,TabBairroDAO::selectAll('bairro') // array de dados

,$res

,null

,null

,'ID'); // chave da tabela);


// adicionando o objeto ao campo html criado acima

$frm->set('html_gride',$g); // ou $frm->getField('gride')->add($g);

// exibir o formulário

$frm->show();

?>

 

Autor: Anderson Gregório de Souza


88 comentários

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

       

      Anderson,

      o que eu entendi é que você quer mostrar somente os bairros da última cidade selecionada após a gravação. Se for isso voce tem que colocar uma condição para somente mostrar o gride quando houver uma cidade postada.

      Exemplo:

       

      $res=null;// ao iniciar o formulário o gride deve vir vazio 

      if( $frm->get('idcidade') )
      {
      $res = TPDOConnection::executeSql('select tabbairro.id, cidade,
      bairro from tabbairro inner join tabcidade on tabbairro.idcidade =
      tabcidade.id where tabcidade.idcidade=? Order by cidade, bairro',$frm->get('idcidade') );

      }
      ...

      Outra idéia seria ao selecionar a cidade, atualizar o form para trazer os bairros já cadastrados. Para isso basta adicionar um evento onchange no campo select da cidade que poste o form.

      Exemplo:

      $frm->addSelectField('idcidade', 'Cidade: ', true, 'select * from tabcidade order by cidade')->addEvent('onChange','submit()');

      Abraço.

  • 5ff2213e17aa70dce114d0b399086fd3?only path=false&size=50&d=404Giovane Spengler(usuário não autenticado)
    14 de Agosto de 2012, 14:27

     

    Vamos ver se entendi direito,

    Você tem 2 tabelas, tabcidade  e tabbairro, quer filtar o bairro de acordo com a cidade selecionada?

    Se for assim, acredito que o codigo postado esteja com folha: "select tabbairro.id, cidade, bairro from tabbairro inner join tabcidade on tabbairro.idcidade = tabcidade.id Order by cidade, bairro", por que a logica está invertida.

    Quando tenho que fazer a consulta pelo sql, costumo testar direto no banco o script sql e depois ter acertado o sql ai jogo no sistema e dificilmente da algum erro.

    Levando em consideração o seu codigo, faria assim: "select id, cidade, bairro from tabcidade inner join tabbairro on (tabbairro.idcidade = tabcidade.id)"

    Seria isso, se eu estiver errado poste novamente para que possamos te ajudar melhor.

Essa comunidade não possui posts nesse blog