menu
Fórum Adianti
menu Menu
Exibir dados de uma outra tabela com datagrid em uma FormView Olá pessoal, minha duvida é a seguinte: tenho um FormView que exibe os dados da tabela cliente em abas. E quero exibir dados de uma tabela diferente (tabela histórico cliente) neste mesmo Formview em uma outra aba. Como posso fazer isso? Desde já agradeço a ajuda. Segue código: ...
ET
Exibir dados de uma outra tabela com datagrid em uma FormView  
Olá pessoal, minha duvida é a seguinte:
tenho um FormView que exibe os dados da tabela cliente em abas. E quero exibir dados de uma tabela diferente (tabela histórico cliente) neste mesmo Formview em uma outra aba. Como posso fazer isso? Desde já agradeço a ajuda.

Segue código:

  1. <?php
  2. /**
  3.  * ClienteFormView Form
  4.  * @author  <your name here>
  5.  */
  6. class ClienteFormView extends TPage
  7. {
  8.     protected $form// form
  9.     protected $datagrid// listing
  10.     protected $pageNavigation;
  11.     
  12.     /**
  13.      * Form constructor
  14.      * @param $param Request
  15.      */
  16.     public function __construct$param )
  17.     {
  18.         parent::__construct();
  19.         TTransaction::open('microerp');
  20.         $this->form = new BootstrapFormBuilder('form_Cliente');
  21.         $this->form->setFormTitle('Informações do beneficiário e dependentes');
  22.         // ABA 1 - informações pessoais do cliente.
  23.         $this->form->appendPage('Beneficiário');
  24.         $label1 = new TLabel('Id:''#333333''12px''');
  25.         $label2 = new TLabel('Código Cliente:''#333333''12px''');
  26.         $label3 = new TLabel('Data Cadastro:''#333333''12px''');
  27.         $label4 = new TLabel('Nome:''#333333''12px''');
  28.         $label5 = new TLabel('Sexo:''#333333''12px''');
  29.         $label6 = new TLabel('RG:''#333333''12px''');
  30.         $label7 = new TLabel('Orgão Expeditor:''#333333''12px''');
  31.         $label8 = new TLabel('CPF:''#333333''12px''');
  32.         
  33.         
  34.         $label11 = new TLabel('Estado Civil:''#333333''12px''');
  35.         $label12 = new TLabel('Data Nascimento:''#333333''12px''');
  36.         $label13 = new TLabel('Idade:''#333333''12px''');
  37.         $label14 = new TLabel('Data Falecimento:''#333333''12px''');
  38.         $label15 = new TLabel('Telefone 1:''#333333''12px''');
  39.         $label16 = new TLabel('Telefone 2:''#333333''12px''');
  40.         $label17 = new TLabel('Celular:''#333333''12px''');
  41.         $label18 = new TLabel('UF:''#333333''12px''');
  42.         $label19 = new TLabel('Cidade:''#333333''12px''');
  43.         $label20 = new TLabel('Bairro:''#333333''12px''');
  44.         $label21 = new TLabel('Número:''#333333''12px''');
  45.         $label22 = new TLabel('Complemento:''#333333''12px''');
  46.         $label23 = new TLabel('CEP:''#333333''12px''');
  47.         $label24 = new TLabel('Referência:''#333333''12px''');
  48.         $label25 = new TLabel('Data Admissão:''#333333''12px''');
  49.         $label26 = new TLabel('Data Carência:''#333333''12px''');
  50.         
  51.         
  52.         $cliente = new Cliente($param['key']);
  53.         
  54.         $text1  = new TTextDisplay($cliente->id'#333333''12px''');
  55.         $text2  = new TTextDisplay($cliente->codigo_cliente'#333333''12px''');
  56.         $text3  = new TTextDisplay(TDate::convertToMask($cliente->data_cadastro'yyyy-mm-dd''dd/mm/yyyy'), '#333333''12px''');
  57.         $text4  = new TTextDisplay($cliente->nome'#333333''12px''');
  58.         $text5  = new TTextDisplay($cliente->sexo->sexo'#333333''12px''');
  59.         $text6  = new TTextDisplay($cliente->rg'#333333''12px''');
  60.         $text7  = new TTextDisplay($cliente->orgao_expeditor'#333333''12px''');
  61.         $text8  = new TTextDisplay($cliente->cpf'#333333''12px''');
  62.         
  63.         
  64.         $text11  = new TTextDisplay($cliente->estado_civil'#333333''12px''');
  65.         $text12  = new TTextDisplay(TDate::convertToMask($cliente->data_nascimento'yyyy-mm-dd''dd/mm/yyyy'), '#333333''12px''');
  66.         $text13  = new TTextDisplay($cliente->idade'#333333''12px''');
  67.         $text14  = new TTextDisplay(TDate::convertToMask($cliente->data_falecimento'yyyy-mm-dd''dd/mm/yyyy'), '#333333''12px''');
  68.         $text15  = new TTextDisplay($cliente->telefone_um'#333333''12px''');
  69.         $text16  = new TTextDisplay($cliente->telefone_dois'#333333''12px''');
  70.         $text17  = new TTextDisplay($cliente->celular'#333333''12px''');
  71.         $text18  = new TTextDisplay($cliente->uf->uf'#333333''12px''');
  72.         $text19  = new TTextDisplay($cliente->cidade->nome'#333333''12px''');
  73.         $text20  = new TTextDisplay($cliente->bairro->bairro'#333333''12px''');
  74.         $text21  = new TTextDisplay($cliente->numero'#333333''12px''');
  75.         $text22  = new TTextDisplay($cliente->complemento'#333333''12px''');
  76.         $text23  = new TTextDisplay($cliente->cep'#333333''12px''');
  77.         $text24  = new TTextDisplay($cliente->referencia'#333333''12px''');
  78.         $text25  = new TTextDisplay(TDate::convertToMask($cliente->data_admissao'yyyy-mm-dd''dd/mm/yyyy'), '#333333''12px''');
  79.         $text26  = new TTextDisplay(TDate::convertToMask($cliente->data_carencia'yyyy-mm-dd''dd/mm/yyyy'), '#333333''12px''');
  80.         
  81.         
  82.         $this->form->addFields([$label1],[$text1], [$label2],[$text2]);
  83.         $this->form->addFields([$label3],[$text3], [$label4],[$text4]);
  84.         $this->form->addFields([$label5],[$text5], [$label6],[$text6]);
  85.         $this->form->addFields([$label7],[$text7], [$label8],[$text8]);
  86.         
  87.         $this->form->addFields([$label11],[$text11], [$label12],[$text12]);
  88.         $this->form->addFields([$label13],[$text13], [$label14],[$text14]);
  89.         $this->form->addFields([$label15],[$text15], [$label16],[$text16]);
  90.         $this->form->addFields([$label17],[$text17], [$label18],[$text18]);
  91.         $this->form->addFields([$label19],[$text19], [$label20],[$text20]);
  92.         $this->form->addFields([$label21],[$text21], [$label22],[$text22]);
  93.         $this->form->addFields([$label23],[$text23], [$label24],[$text24]);
  94.         $this->form->addFields([$label25],[$text25], [$label26],[$text26]);
  95.        
  96.         
  97.         //ABA 2 - informações de pagamentos do cleinte.
  98.         $this->form->appendPage('Pagamentos');
  99.         $label27 = new TLabel('Primeiro Vencimento:''#333333''12px''');
  100.         $text27  = new TTextDisplay(TDate::convertToMask($cliente->primeiro_vencimento'yyyy-mm-dd''dd/mm/yyyy'), '#333333''12px''');
  101.          $this->form->addFields([$label27],[$text27]);
  102.         //ABA 3 - informaçoes complementares do cadastro do cliente
  103.         $this->form->appendPage('Informações');
  104.         $label9 = new TLabel('Profissão:''#333333''12px''');
  105.         $label10 = new TLabel('Religião:''#333333''12px''');
  106.         $text9  = new TTextDisplay($cliente->profissao'#333333''12px''');
  107.         $text10  = new TTextDisplay($cliente->religiao'#333333''12px''');
  108.         $this->form->addFields([$label9],[$text9]);
  109.         $this->form->addFields([$label10],[$text10]);
  110.         //ABA 4 - Informações do histórico do cliente
  111.         $this->form->appendPage('Histórico');
  112.         //Quero exibir os dados da tabela histórico do cliente em uma grid aqui.
  113.         //ABA 5 - informações (cadastro) dos dependentes do titular do plano.
  114.         $this->form->appendPage('Dependentes');
  115.         
  116.        
  117.         
  118.         // vertical box container
  119.         $container = new TVBox;
  120.         $container->style 'width: 100%';
  121.         $container->class 'formView-container'
  122.         $container->add(new TXMLBreadCrumb('menu.xml''ClienteList'));
  123.         $container->add($this->form);
  124.         TTransaction::close();
  125.         parent::add($container);
  126.     }
  127.     
  128.     public function onShow()
  129.     {      
  130.     } 
  131. }
  132. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (7)


MG

Erickson
Add uma aba como você faz hoje.
Cria uma datagrid e um método por exemplo onReloadHistorico().
Popula a grid neste método.
Adiciona um TPanelGrupo e depois a grid nele.
Utilizando o método $this->form->addContent(), adicione o Panel Group na página.
E sempre que chamar onEdit, ou onSave, executo o método "onReloadHistóatico()".
ET

Olá Marcelo, bom dia.

Adicionei uma aba e criei o datagrid (que por em quanto está exibindo dados da tabela cliente), mas como posso fazer para popular a grid com os dados da tabela de histórico? quero apenas listar os dados da tabela historico dentro deste formview da tabela cliente.

Obrigado pela ajuda.
MG

Erickson
Basta criar o repository apontando para o model histórico.
Na criteria, adicionar o seguinte:

  1. <?php
  2.     // assumindo que a chave que liga histórico à clientes, seja o atributo "cliente_id"
  3.     $criteria->add(new TFilter('cliente-id','=',$id)); /
  4. ?>
ET

Estou fazendo da seguinte forma, não está me retornando nenhum erro, mas o grid não carrega nenhum dado. O que estou fazendo errado?

  1. <?php
  2. //GRID DA FORMVIEW
  3. $this->form->appendPage('Histórico');
  4.         $this->datagrid = new TQuickGrid;
  5.         $this->datagrid->style 'width:100%';
  6.         $this->datagrid->disableDefaultCLick();
  7.         $this->datagrid->addQuickColumn('ID''historico_cliente->id''left');
  8.         $this->datagrid->addQuickColumn('Data''data_historico''left');
  9.         $this->datagrid->addQuickColumn('Observação''observacao''left');
  10.         $this->datagrid->createModel();
  11.         $items HistoricoCliente::where('cliente_id''='$historico_cliente->id)->load();
  12.         $this->datagrid->addItems($items);
  13.         $panel = new TPanelGroup('Histórico do cliente''#f5f5f5');
  14.         $panel->add(new BootstrapDatagridWrapper($this->datagrid));
  15.         $this->form->addContent([$panel]);
  16. //MODEL
  17. class HistoricoCliente extends TRecord
  18. {
  19.     const TABLENAME  'historico_cliente';
  20.     const PRIMARYKEY 'id';
  21.     const IDPOLICY   =  'serial'// {max, serial}
  22.     
  23.     
  24.     
  25.     /**
  26.      * Constructor method
  27.      */
  28.     public function __construct($id NULL$callObjectLoad TRUE)
  29.     {
  30.         parent::__construct($id$callObjectLoad);
  31.         parent::addAttribute('cliente_id');
  32.         parent::addAttribute('data_historico');
  33.         parent::addAttribute('observacao');
  34.     }
  35.     
  36.     public function set_cliente(Cliente $object)
  37.     {
  38.         $this->historico_cliente $object;
  39.         $this->cliente_id $object->id;
  40.     }
  41.    public function get_cliente()
  42.     {
  43.         
  44.         // loads the associated object
  45.         if (empty($this->historico_cliente))
  46.             $this->historico_cliente = new Cliente($this->cliente_id);
  47.         
  48.         // returns the associated object
  49.         return $this->historico_cliente;
  50.     }
  51. ?>
MG

Erickson

A colunha "ID" de histórico é somente "id" e nao "historico_cliente_id". Veja seu model, a primary key está setada como "ID"?

  1. <?php
  2.         $this->datagrid->addQuickColumn('ID''historico_cliente->id''left');
  3. ?>


Eu sugiro criar um onReloadHistorico.

  1. <?php
  2. public function onReloadHistorico($param)
  3. {
  4.     $repository = new TRepository('HistoricoCliente'); // 
  5.     $criteria = new TCriteria;
  6.     $criteria->add(new TFilter('cliente_id','='$param['id'])); // param[id] id do form (cliente)
  7.      $objects $repository->load($criteria);
  8.     foreach($objects as $object) {
  9.         $this->datagfrid->addItem($object);
  10.     }
  11. }
  12. ?>


Chama este método depois do "createModelo()".
Tenta isso!
ET

Consegui.

  1. <?php
  2. $this->form->appendPage('Histórico');
  3.         //DataGrid Histórico
  4.         $this->historico_cliente_list = new TQuickGrid;
  5.         $this->historico_cliente_list->style 'width:100%';
  6.         $this->historico_cliente_list->disableDefaultClick();
  7.         
  8.         $this->historico_cliente_list->addQuickColumn('Histórico''observacao''left');
  9.         $this->historico_cliente_list->addQuickColumn('Data''data_historico''left');
  10.         
  11.         $this->historico_cliente_list->createModel();
  12.         
  13.         $items HistoricoCliente::where('cliente_id''='$cliente->id)->load();
  14.         $this->historico_cliente_list->addItems($items);
  15.         
  16.         $panel = new TPanelGroup('Histórico''#f5f5f5');
  17.         $panel->add(new BootstrapDatagridWrapper($this->historico_cliente_list));
  18.         
  19.         $this->form->addContent([$panel]);
  20. ?>


O brigado pela atenção Marcelo.
CM

Erickson boa noite.
Sei que o posto é antigo, mas estou precisando exatamente do que você fez. Que é um histórico do Cliente.
Copiei seus códigos, mas não consegui fazer funcionar nem a pau!
Poderia ajudar nisso? Falta algum código na última parte do seu?
Obrigado