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
{
$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.
// criarção do gride
$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') );
$g = new TGrid( 'gd' // id do gride no html ,'Listagem dos Bairros' // titulo do gride //,$res // array de dados ,$res ,null ,null ,'ID'); // chave da tabela bairro); $g->show(); // gerar o html do gride No formulário o campo html que receberá o gride ficará vazio, assim: $frm->set('html_gride',''); Agora é que entra a função ajax que injetará o gride na página Crie no final do módulo de cadastro de bairros depois da tag de fechamento do php o seguinte codigo javascript: <script> function criarGride() { fwGetGrid('modulos/cad_bairro/cad_bairro.php','html_gride',{"action":"criar_gride"}); } </script> e no evento onChange do campo select da cidades, voce tem que chamar a função criarGride(); assim: $frm->addSelectField('idcidade', 'Cidade: ', true, 'select * from tabcidade order by cidade')->addEvent('onChange','criarGride()'); A lógica é essa, seria bom dar uma olhada nos exemplo das aplicações que coloquei para download na comunidade: CRUD FORMDIN - www.softwarepublico.gov.br/dotlrn/clubs/formdin/file-storage/view/exemplos/Codigo_Fonte_CRUD_FormDin_-_AJAX_02-07-2012.zip Aplicação para Gerenciar Usuários... - www.softwarepublico.gov.br/dotlrn/clubs/formdin/file-storage/view/exemplos/appSeguranca_05-08-2012.zip Todas tem muitos exemplo de como fazer isso. Abraço.