Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problema de duplicação da grid Pessoal estou criando uma grid seguindo o modelo do tutor adinati. No entanto, a grid aparece duplicada.Já tentei de tudo e a mesma ainda aparece duplicada. Alguém poderia me dá um help? ...
TN
Problema de duplicação da grid  
Pessoal estou criando uma grid seguindo o modelo do tutor adinati. No entanto, a grid aparece duplicada.Já tentei de tudo e a mesma ainda aparece duplicada. Alguém poderia me dá um help?

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 (2)


TN

  1. <?php
  2. /**
  3.  * ConvenioList
  4.  *
  5.  * @version    1.0
  6.  * @package    LexusHealth
  7.  * @subpackage control
  8.  * @author     Tiago Nogueira
  9.  * @copyright  Copyright (c) 2021
  10.  * 
  11.  */
  12. class ConvenioList extends TPage
  13. {
  14.     protected $form;     // registration form
  15.     protected $datagrid// listing
  16.     protected $pageNavigation;
  17.     
  18.     use Adianti\base\AdiantiStandardListTrait;
  19.     
  20.     /**
  21.      * Page constructor
  22.      */
  23.     public function __construct()
  24.     {
  25.         parent::__construct();
  26.         
  27.         //Conexão com o BD
  28.         $this->setDatabase('lexushealt_BD');  // defines the database
  29.         $this->setActiveRecord('Convenio');   // defines the actibve record
  30.         $this->setDefaultOrder('id''asc');  // defines the default order
  31.         //$this->setLimit(10);
  32.         //adicionando os filtros
  33.         $this->addFilterField('id''=''id'); // filterField, operator, formField
  34.         $this->addFilterField('nome''like''nome'); // filterField, operator, formField
  35.         $this->addFilterField('cnpj''like''cnpj'); // filterField, operator, formField
  36.         $this->addFilterField('ativo''like''ativo'); // filterField, operator, formField
  37.         
  38.         // criando a Datagrid
  39.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  40.         $this->datagrid->style 'width: 100%';        
  41.         //$this->datagrid->datatable = 'true';
  42.         //$this->datagrid->disableDefaultClick();
  43.         //$this->datagrid->width = '100%'; 
  44.         //$this->datagrid->setHeight(320);
  45.         $this->datagrid->enablePopover('Descrição''<b>{descricao}</b>');                                
  46.         // criando as colunas da Datagrid
  47.         $column_id = new TDataGridColumn('id''Registro''center');
  48.         $column_nome = new TDataGridColumn('nome''Convênio''center');
  49.         $column_cnpj = new TDataGridColumn('cnpj''CNPJ''center');
  50.         $ativo = new TDataGridColumn('ativo''Ativo''center');
  51.         
  52.         //Configurações das colunas da Datagrid
  53.         //$column_id->enableAutoHide(500);
  54.         //$column_nome->enableAutoHide(500);
  55.         //$column_cnpj->enableAutoHide(500);
  56.         //$ativo->enableAutoHide(500);
  57.         
  58.         //ações de ordenação das colunas do Datagrid
  59.         $column_id->setAction(new TAction([$this'onReload']), ['order' => 'id']);
  60.         $column_nome->setAction(new TAction([$this'onReload']), ['order' => 'nome']);
  61.         $column_cnpj->setAction(new TAction([$this'onReload']), ['order' => 'cnpj']);
  62.         $ativo->setAction(new TAction([$this'onReload']), ['order' => 'ativo']);
  63.         
  64.         //Transformação dos dados da coluna ativo da Datagrid        
  65.         $ativo->setTransformer(function ($value){
  66.             if ($value == 'true')
  67.             {
  68.                 $div = new TElement('span');
  69.                 $div->class="label btn-salvar";
  70.                 $div->style="text-shadow:none; font-size:12px";
  71.                 $div->add('Sim');
  72.                 return $div;
  73.             }
  74.             else
  75.             {
  76.                 $div = new TElement('span');
  77.                 $div->class="label btn-fechar";
  78.                 $div->style="text-shadow:none; font-size:12px";
  79.                 $div->add('Não');
  80.                 return $div;
  81.             }
  82.         });
  83.         
  84.         // Adicionando as colunas no DataGrid
  85.         $this->datagrid->addColumn($column_id);
  86.         $this->datagrid->addColumn($column_nome);
  87.         $this->datagrid->addColumn($column_cnpj);
  88.         $this->datagrid->addColumn($ativo);        
  89.          
  90.         // criando a ação EDIT
  91.         $action_edit = new TDataGridAction(array('ConvenioForm''onEdit'));
  92.         $action_edit->setButtonClass('btn btn-default');
  93.         $action_edit->setLabel(_t('Edit'));
  94.         $action_edit->setImage('far:edit blue');
  95.         $action_edit->setField('id');
  96.         $this->datagrid->addAction($action_edit);
  97.         
  98.         // criando a ação  DELETE
  99.         $action_del = new TDataGridAction(array($this'onDelete'));
  100.         $action_del->setButtonClass('btn btn-default');
  101.         $action_del->setLabel(_t('Delete'));
  102.         $action_del->setImage('far:trash-alt red');
  103.         $action_del->setField('id');
  104.         $this->datagrid->addAction($action_del);
  105.         
  106.         // criando a ação ONOFF
  107.         $action_onoff = new TDataGridAction(array($this'onTurnOnOff'));
  108.         $action_onoff->setButtonClass('btn btn-default');
  109.         $action_onoff->setLabel(_t('Activate/Deactivate'));
  110.         $action_onoff->setImage('fa:power-off orange');
  111.         $action_onoff->setField('id');
  112.         $this->datagrid->addAction($action_onoff);
  113.                
  114.         // Crindo o model DataGrid
  115.         $this->datagrid->createModel();
  116.         // Criação do form no DataGrid
  117.         $this->form = new TForm('form_search_convenio2');
  118.         
  119.         // add datagrid inside form
  120.         $this->form->add($this->datagrid);
  121.         $this->form->style 'overflow-x:auto';
  122.         
  123.         // create the form fields
  124.         $id = new TEntry('id');
  125.         $nome = new TEntry('nome');
  126.         $cnpj = new TEntry('cnpj');
  127.         $ativo = new TEntry('ativo');
  128.         
  129.         // ENTER fires exitAction
  130.         $id->exitOnEnter();
  131.         $nome->exitOnEnter();
  132.         $cnpj->exitOnEnter();
  133.         $ativo->exitOnEnter();
  134.         
  135.         $id->setSize('100%');
  136.         $nome->setSize('100%');
  137.         $cnpj->setSize('100%');
  138.         $ativo->setSize('100%');
  139.         
  140.         // avoid focus on tab
  141.         $id->tabindex = -1;
  142.         $nome->tabindex = -1;
  143.         $cnpj->tabindex = -1;
  144.         $ativo->tabindex = -1;
  145.         
  146.         $id->setExitAction( new TAction([$this'onSearch'], ['static'=>'1']) );
  147.         $nome->setExitAction( new TAction([$this'onSearch'], ['static'=>'1']) );
  148.         $cnpj->setExitAction( new TAction([$this'onSearch'], ['static'=>'1']) );
  149.         $ativo->setExitAction( new TAction([$this'onSearch'], ['static'=>'1']) );
  150.         
  151.         // create row with search inputs
  152.         $tr = new TElement('tr');
  153.         $this->datagrid->prependRow($tr);
  154.         
  155.         $tr->addTElement::tag('td'''));
  156.         $tr->addTElement::tag('td'''));
  157.         $tr->addTElement::tag('td'''));
  158.         $tr->addTElement::tag('td'$id));
  159.         $tr->addTElement::tag('td'$nome));
  160.         $tr->addTElement::tag('td'$cnpj));
  161.         $tr->addTElement::tag('td'$ativo));
  162.         
  163.         $this->form->addField($id);
  164.         $this->form->addField($nome);
  165.         $this->form->addField($cnpj);
  166.         $this->form->addField($ativo);
  167.         
  168.         $this->form->setData(TSession::getValue(__CLASS__.'_filter_data'));
  169.         
  170.         // creates the page navigation
  171.         $this->pageNavigation = new TPageNavigation;
  172.         $this->pageNavigation->setAction(new TAction([$this'onReload']));
  173.         $this->pageNavigation->enableCounters();
  174.         
  175.         $panel = new TPanelGroup('Convênios''white');
  176.         $panel->add($this->form);
  177.         $panel->addFooter($this->pageNavigation);
  178.         // header actions
  179.         $dropdown = new TDropDown('Export''fa:list');
  180.         $dropdown->setButtonClass('btn btn-default waves-effect dropdown-toggle');
  181.         $dropdown->addAction'Save as CSV', new TAction([$this'onExportCSV'], ['register_state' => 'false''static'=>'1']), 'fa:table fa-fw blue' );
  182.         $dropdown->addAction'Save as PDF', new TAction([$this'onExportPDF'], ['register_state' => 'false''static'=>'1']), 'far:file-pdf fa-fw red' );
  183.         $dropdown->addAction'Save as XML', new TAction([$this'onExportXML'], ['register_state' => 'false''static'=>'1']), 'fa:code fa-fw green' );
  184.         $panel->addHeaderWidget$dropdown );
  185.         
  186.         $panel->addHeaderActionLink'New',  new TAction(['ConvenioForm''onEdit'], ['register_state' => 'false']), 'fa:plus green' );
  187.         // vertical box container
  188.         $container = new TVBox;
  189.         $container->style 'width: 100%';
  190.         $container->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  191.         $container->add($this->form);
  192.         $container->add($panel);
  193.         
  194.         parent::add($container);
  195.         
  196.     }
  197.     /**
  198.      * Turn on/off an user
  199.      */
  200.     public function onTurnOnOff($param)
  201.     {
  202.         try
  203.         {
  204.             TTransaction::open('lexushealt_BD');
  205.             $convenio Convenio::find($param['id']);
  206.             if ($convenio instanceof Convenio)
  207.             {
  208.                 $convenio->ativo $convenio->ativo == true false true;
  209.                 $convenio->store();
  210.             }
  211.             
  212.             TTransaction::close();
  213.             
  214.             $this->onReload($param);
  215.         }
  216.         catch (Exception $e)
  217.         {
  218.             new TMessage('error'$e->getMessage());
  219.             TTransaction::rollback();
  220.         }
  221.     }
  222. }
TN

Achei o erro pessoal.

$container->add($this->form);
$container->add($panel);

Tudo certo agora! Removi o container form