Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Carregar datagrid ao clicar em botão de uma TFieldList Bom dia pessoal Eu estou tentando carregar um datagrid quando clico no addButtonAction porém quando carrega a grid carrega fora da TWindow O metodo que faz essa chamada é o onCarregaGrid Obs: essa Twindow cria abas em tempo de execução (implementação com THtmlRenderer) e nessas abas eu carrego uma TPage, pois eu queria que cada aba tivesse uma ação separada (save, edit, ect). ...
AW
Carregar datagrid ao clicar em botão de uma TFieldList  
Bom dia pessoal

Eu estou tentando carregar um datagrid quando clico no addButtonAction porém
quando carrega a grid carrega fora da TWindow
O metodo que faz essa chamada é o onCarregaGrid

Obs: essa Twindow cria abas em tempo de execução (implementação com THtmlRenderer) e nessas abas eu carrego uma TPage, pois eu queria que cada aba tivesse uma ação separada (save, edit, ect).


vou mandar em anexo as imgs

Obrigado

  1. <?php
  2. class AbaFormContratadas extends TPage{
  3.     protected $form;    
  4.     private $list_contratadas;
  5.     private $criteria_contratada;
  6.     private $empresa_id;
  7.     private $obra_id;
  8.     protected $datagrid;
  9.     protected $pageNavigation;
  10.     use Adianti\Base\AdiantiStandardFormTrait;
  11.     use Adianti\Base\AdiantiStandardListTrait;    
  12.     public function __construct(){
  13.         parent::__construct();
  14.         
  15.         //creates the form
  16.         $this->form = new BootstrapFormBuilder('form_contratadas');   
  17.         $this->form->setProperty('style''margin:0;border:0;padding:0;');
  18.         $this->form->setClientValidation(true);                
  19.         
  20.         //fields do form
  21.         $id               = new THidden('id[]');        
  22.         //declarado no ObraForm2
  23.         $this->empresa_id TSession::getValue('empresa_id');
  24.         $this->obra_id    TSession::getValue('obra_id');        
  25.         TTransaction::open('sgdt');              
  26.             
  27.         $empresa_obra_dados EmpresaObra::where('empresa_id''='$this->empresa_id)
  28.                                                  ->where('obra_id''='$this->obra_id)
  29.                                                  ->load();
  30.         
  31.         $dados_contratada_id = array();
  32.         if ($empresa_obra_dados){          
  33.             foreach ($empresa_obra_dados as $empresa_obra){                
  34.                 $dados_contratada_id[] = $empresa_obra->contratada_id;                                           
  35.             }           
  36.         }
  37.         
  38.         TTransaction::close();
  39.         //filtro para não trazer a mesma empresa no TDBUniqueSearch
  40.         $this->criteria_contratada = new TCriteria();
  41.         
  42.         $this->criteria_contratada->add(new TFilter('id''<>'$this->empresa_id));
  43.         
  44.         $this->criteria_contratada->add(//trazer todas a empresas vinculadas a contratante
  45.             new TFilter('id''IN''(SELECT contratada_id FROM empresa_contratante_contratada WHERE contratante_id = '.$this->empresa_id.')')
  46.         );
  47.         //echo $this->criteria_contratada->dump();
  48.                         
  49.         $contratada_id  = new TDBCombo('contratada_id[]''sgdt''Empresa''id''{nome_fantasia} - {cnpj}'null$this->criteria_contratada);
  50.         $contratada_id->addValidation('Selecione a Contratada', new TRequiredValidator);
  51.         $contratada_id->setSize('100%');
  52.         $contratada_id->placeholder 'Entre com a Emmpresa Contratada';
  53.         
  54.         $this->list_contratadas = new TFieldList;
  55.         //$this->list_contratadas->name  = 'list_field_contratadas';
  56.         $this->list_contratadas->width '100%';
  57.         //add fiels ao form        
  58.         $this->list_contratadas->addField('Contratada (*)'$contratada_id, ['width' => '80%']);
  59.         $this->list_contratadas->addButtonAction(new TAction([$this,'onCarregaGrid']), 'fa:cog''Gerenciar Funcionários');
  60.         
  61.         $this->form->addContent([$this->list_contratadas]);
  62.         $btn_salvar $this->form->addAction('Salvar', new TAction([$this'onSave'], ['static'=> 1]), 'fa:save');
  63.         $btn_salvar->class 'btn btn-sm btn-primary';
  64.         
  65.         //$this->form->addActionLink('Novo',  new TAction([$this, 'onEdit'],['titulo_botao' => 'Cadastrar ', 'empresa_id' => $param['empresa_id']]), 'fa:plus blue');        
  66.         $btn_novo $this->form->addAction('Novo', new TAction([$this'onEdit'],['titulo_botao' => 'Cadastrar ']), 'fa:plus blue');                 
  67.         TScript::create(
  68.             '$("[name=tab_form_contratadas]").focusout(function(){'             
  69.                 .AdiantiCoreApplication::loadPage('DocumentoFormView'null, array('register_state' => 'false''target_container' => 'left-panel')). // load page
  70.             '});'
  71.         );
  72.         
  73.         /*Grid de Funcionarios Obra*/
  74.         //$this->form->addContent([ TElement::tag('h6', 'Funcionarios da Obra', [ 'style'=>'background: whitesmoke; padding: 5px; border-radius: 5px; margin-top: 5px'])]);
  75.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  76.         $this->datagrid->style 'width:100%;font-size:13px';
  77.         //ativar scrollable and define height
  78.         $this->datagrid->setHeight(230);
  79.         $this->datagrid->makeScrollable();
  80.         $col_id           = new TDataGridColumn('id''Cód''center''10%');
  81.         $col_nome         = new TDataGridColumn('nome''Funcionário''left''30%');
  82.         $col_cpf_cnpj     = new TDataGridColumn('cpf_cnpj''CPF/CNPJ''left''20%');       
  83.         $col_fone         = new TDataGridColumn('fone''Fone''left''20%');
  84.         $col_celular      = new TDataGridColumn('celular''Celular''left''20%');
  85.         $col_fone->setTransformer( function($value$object$row) {
  86.             $util = new Util();
  87.             return $util->formatPhone($value);
  88.         });
  89.         $this->datagrid->addColumn($col_id)->setVisibility(false); 
  90.         $this->datagrid->addColumn($col_nome);
  91.         $this->datagrid->addColumn($col_cpf_cnpj);        
  92.         $this->datagrid->addColumn($col_fone);
  93.         $this->datagrid->addColumn($col_celular);
  94.         $this->datagrid->createModel();
  95.         $this->pageNavigation = new TPageNavigation;
  96.         $this->pageNavigation->setAction( new TAction([$this'onReload']));        
  97.         $this->pageNavigation->enableCounters();
  98.         //vertical box container
  99.         $vbox          = new TVBox;
  100.         $vbox->style   'width: 100%;padding:0';
  101.         $vbox->add($this->form);
  102.         $vbox->add($panel TPanelGroup::pack('Funcionários da Obra'$this->datagrid$this->pageNavigation));
  103.         
  104.         parent::add($vbox);
  105.     }
  106.     
  107.     public function onClear($param){
  108.         //$this->form->clear();
  109.         $this->list_contratadas->addHeader();
  110.         $this->list_contratadas->addDetail( new stdClass );
  111.         $this->list_contratadas->addCloneAction();
  112.     }
  113.     public function onSave($param){        
  114.         try{            
  115.             TTransaction::open('sgdt');
  116.             // TTransaction::dump();
  117.             
  118.             $this->form->validate(); // validate form data
  119.             
  120.             EmpresaObra::where('empresa_id''='$this->empresa_id)
  121.                         ->where('obra_id''='$this->obra_id)->delete();            
  122.             
  123.             if (!empty($param['contratada_id'])){
  124.                 foreach ($param['contratada_id'] as $row => $contratada){
  125.                     if ($contratada){
  126.                         $empresa_contratante_contratada ContratanteContratada::where('contratante_id''='$this->empresa_id)
  127.                                                         ->where('contratada_id''='$contratada)->load();
  128.                         $empresa_obra = new EmpresaObra;
  129.                         $empresa_obra->contratada_id    $contratada;
  130.                         $empresa_obra->empresa_id       $this->empresa_id;
  131.                         $empresa_obra->obra_id          $this->obra_id;
  132.                         $empresa_obra->contratante_contratada_id $empresa_contratante_contratada['0']->id;                      
  133.                         
  134.                         $empresa_obra->store();                        
  135.                     }
  136.                 }                
  137.             }
  138.             TTransaction::close();
  139.         
  140.             new TMessage('info''Registro salvo com sucesso');                                  
  141.         } catch (Exception $e){
  142.             $this->form->setData($this->form->getData()); // keep form data
  143.             TTransaction::rollback(); // undo all pending operations
  144.             new TMessage('error'$e->getMessage());
  145.         }
  146.     }
  147.     public function onEdit($param){
  148.         try {            
  149.             //se tem obra pode editar gerenciar contratadas
  150.             if (isset($param['key'])){ //key = obra_id
  151.                 
  152.                 $obra_id $param['key'];
  153.                 
  154.                 TTransaction::open('sgdt');
  155.                 //TTransaction::dump();                                
  156.                 $empresa_obra_dados EmpresaObra::where('empresa_id''='$param['empresa_id'])
  157.                                                  ->where('obra_id''='$obra_id)->load();                                            
  158.                 if ($empresa_obra_dados){
  159.                     
  160.                     $this->list_contratadas->addHeader();
  161.                     foreach ($empresa_obra_dados as $empresa_obra){
  162.                         $objeto_empresa_obra = new stdClass;
  163.                         $objeto_empresa_obra->empresa_id       $empresa_obra->empresa_id;
  164.                         $objeto_empresa_obra->obra_id          $empresa_obra->obra_id//key = obra_id
  165.                         $objeto_empresa_obra->contratada_id    $empresa_obra->contratada_id;
  166.                         $this->list_contratadas->addDetail($objeto_empresa_obra);                                           
  167.                     }
  168.                     $this->list_contratadas->addCloneAction();
  169.                 }
  170.                 else{
  171.                     $empresaobra = new EmpresaObra();
  172.                     
  173.                     $empresaobra->empresa_id $param['empresa_id'];
  174.                     $empresaobra->obra_id    $obra_id;
  175.                     $this->list_contratadas->addHeader();                
  176.                     $this->list_contratadas->addDetail(new stdClass);                   
  177.                     $this->list_contratadas->addCloneAction();                    
  178.                 }                                                
  179.                 TTransaction::close();
  180.             }else{
  181.                 $this->onClear($param);
  182.                 
  183.                     // TTransaction::open('sgdt');
  184.                     // //TTransaction::dump();
  185.                     // $empresaobra = new EmpresaObra((int) $key);
  186.                     // $empresaobra->empresa_id = $param['empresa_id'];
  187.                     // $this->form->setData($empresaobra);
  188.                     
  189.                     // TForm::sendData('form_contratadas', $obra);
  190.                     // TTransaction::close();
  191.             }
  192.         } catch (Exception $e){
  193.             new TMessage('error'$e->getMessage());
  194.             TTransaction::rollback();
  195.         }
  196.     }
  197.     
  198.     public function onCarregaGrid($param){
  199.         try {
  200.             // print '<pre>';
  201.             // var_dump($param);
  202.             // print '</pre>';
  203.             TTransaction::open('sgdt');
  204.             $funcionarios Funcionario::where('empresa_id''='$param['contratada_id'])->load();
  205.             
  206.             //$funcionarios = array();
  207.             
  208.             if ($funcionarios){
  209.                 $this->datagrid->clear();
  210.                 
  211.                 foreach ($funcionarios as $funcionario){
  212.                     $items = new stdClass;
  213.                     $items->id $funcionario->id;
  214.                     $items->nome $funcionario->nome;
  215.                     $this->datagrid->addItem($items);
  216.                 }                
  217.             }
  218.             
  219.             TTransaction::close();
  220.         } catch (Exception $e){
  221.             $msg 'Erro : ' $e->getCode() .  ' - Mensagem : ' $e->getMessage(); 
  222.             new TMessage('error',$msg);
  223.         }
  224.     }
  225. }
  226. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (1)


NR

Para carregar páginas em elementos específicos, veja o exemplo abaixo:
https://adianti.com.br/framework_files/tutor/index.php?class=InboxView

A renderização da classe MessageView(chamada ao clicar em Inbox ou Sent) é feita dentro da div "message_area".
Dentro da classe MessageView você vai encontrar o seguite trecho:
  1. <?php
  2. parent::setTargetContainer('message_area');
  3. ?>

O atributo passado para essa função deve corresponder ao id de um elemento html, onde a página será renderizada.