Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Já Carregar o DataGrid com o filtro Pessoal, estou precisando da ajuda de vocês. Tenho um formulário que é usado para consulta de dados e andamento de um protocolo. Então uso ele chamando o método onEdit passando os dados do código. Mas o DataGrid não entra filtrando pelo codigo. Já até tentei pelo onReload mas carrega todos os dados da tabela. Pelo código abaixo do construtor, não vem nada. Pelo onLoad vem to...
SJ
Já Carregar o DataGrid com o filtro  
Pessoal, estou precisando da ajuda de vocês.

Tenho um formulário que é usado para consulta de dados e andamento de um protocolo.
Então uso ele chamando o método onEdit passando os dados do código.

Mas o DataGrid não entra filtrando pelo codigo.
Já até tentei pelo onReload mas carrega todos os dados da tabela.

Pelo código abaixo do construtor, não vem nada.
Pelo onLoad vem todos os dados da tabela, não respeitando o filtro

Alguém pode dar um help?


  1. <?php
  2. use Adianti\Control\TPage;
  3. use Adianti\Control\TAction;
  4. use Adianti\Widget\Dialog\TMessage;
  5. use Adianti\Wrapper\BootstrapFormBuilder;
  6. class ProcessoAnonimoFormTeste extends TPage
  7. {
  8.     private $form;
  9.     // trait with saveFile, saveFiles, ...
  10.     use Adianti\Base\AdiantiFileSaveTrait;
  11.     // trait with onReload, onSearch, onDelete...
  12.     use Adianti\Base\AdiantiStandardListTrait;
  13.     public function __construct($param)
  14.     {
  15.         parent::__construct();
  16.         // $this->setDatabase('bdados');        // defines the database
  17.         // $this->setActiveRecord('ProcessoTramitacao');       // defines the active record
  18.         // $this->addFilterField('codigo', '=', 'codigo'); // filter field, operator, form field
  19.         // $this->setDefaultOrder('id', 'desc');           // define the default order
  20.         // $criteria = new TCriteria();
  21.         // $criteria->add(new TFilter('codigo','=',TSession::getValue('codigo')));
  22.         // $this->setCriteria($criteria);
  23.         //------------------------------------------------------------------------------------------
  24.         // Formulário
  25.         //------------------------------------------------------------------------------------------
  26.         
  27.         $this->form = new BootstrapFormBuilder('meu_form');
  28.         $this->form->setFormTitle('<b>Manifestação</b>');
  29.         $this->form->setClientValidationtrue ); // Habilita as validações nativas do HTML no Cliente(tips) 
  30.         $this->form->setFieldSizes('100%');       //IMPORTANTE!!! Puxa todos os campos do formulário para 100%
  31.         //------------------------------------------------------------------------------------------
  32.         // Cria os Elementos
  33.         //------------------------------------------------------------------------------------------
  34.         $id              = new THidden('id');
  35.         $codigo          = new THidden('codigo');
  36.         $dt_cadastro     = new TDate('dt_cadastro');
  37.         $hr_cadastro     = new TTime('hr_cadastro');
  38.         $contato_id      = new THidden('contato_id');
  39.  
  40.         $ocor_endereco   = new TEntry('ocor_endereco');
  41.         $ocor_bairro     = new TEntry('ocor_bairro');
  42.         $ocor_referencia = new TEntry('ocor_referencia');
  43.         $ocor_descricao  = new TText('ocor_descricao');
  44.         $faixa_idade_id  = new TDBCombo('faixa_idade_id''bdados''FaixaIdade' ,  'id''descricao');
  45.         $solicitacao_id  = new TDBCombo('solicitacao_id''bdados''Solicitacao' 'id''descricao');
  46.         $assunto_id      = new TDBCombo('assunto_id',     'bdados''Assunto' ,     'id''descricao');
  47.         //------------------------------------------------------------------------------------------
  48.         // Configurações dos campos
  49.         //------------------------------------------------------------------------------------------
  50.         $contato_id->setValue(1);
  51.         $dt_cadastro->setDatabaseMask('yyyy-mm-dd');
  52.         $ocor_endereco->forceUpperCase();
  53.         $ocor_bairro->forceUpperCase();
  54.         $ocor_referencia->forceUpperCase();
  55.         
  56.         $assunto_id->enableSearch();
  57.         
  58.         $id->setEditable(FALSE);
  59.         $dt_cadastro->setEditable(FALSE);
  60.         $hr_cadastro->setEditable(FALSE);
  61.         //------------------------------------------------------------------------------------------
  62.         // Adiciona os campos no form
  63.         //------------------------------------------------------------------------------------------
  64.         $this->form->appendPage('Dados da Manifestação');
  65.         $this->form->addFields( [ $id          ] )->style 'display:none';
  66.         $this->form->addFields( [ $codigo      ] )->style 'display:none';
  67.         $this->form->addFields( [ $dt_cadastro ] )->style 'display:none';
  68.         $this->form->addFields( [ $hr_cadastro ] )->style 'display:none';
  69.         $this->form->addFields( [ $contato_id  ] )->style 'display:none';
  70.         $row $this->form->addFields( [ new TLabel('Tipo de Solicitação') , $solicitacao_id ],
  71.                                        [ new TLabel('Assunto')             , $assunto_id     ],
  72.                                        [ new TLabel('Faixa de Idade')      , $faixa_idade_id ]);
  73.         $row->layout = [ 'col-sm-3''col-sm-7''col-sm-2'];
  74.         // Divisão---------------------------------------------------------------------------------
  75.         $label = new TLabel('Dados da Manifestação''#6979BF'12'bi');
  76.         $label->style 'text-align:left;border-bottom: 1px solid gray; width: 100%; padding-top: 20px' ;
  77.         $this->form->addContent( [$label] );
  78.         
  79.         // Linha-----------------------------------------------------------------------------------
  80.         $row $this->form->addFields( [ new TLabel('Endereço')        ,$ocor_endereco   ],
  81.                                        [ new TLabel('Bairro')          ,$ocor_bairro     ]);
  82.         $row->layout = [ 'col-sm-8''col-sm-4'];
  83.         
  84.         // Linha-----------------------------------------------------------------------------------
  85.         $row $this->form->addFields( [ new TLabel('Referência')      ,$ocor_referencia ]);
  86.         $row->layout = [ 'col-sm-12' ];
  87.         // Linha-----------------------------------------------------------------------------------
  88.         $row $this->form->addFields( [ new TLabel('Descrição')       ,$ocor_descricao  ]);
  89.         $row->layout = [ 'col-sm-12' ];
  90.         // Anexos-----------------------------------------------------------------------------------
  91.         $this->form->appendPage('Anexos');
  92.         $camera1  = new TImageCapture('camera1'); 
  93.         $camera2  = new TImageCapture('camera2');
  94.         $camera3  = new TImageCapture('camera3');
  95.         $camera4  = new TImageCapture('camera4');
  96.         $arquivos = new TMultiFile('arquivos');
  97.         $camera1->setSize(250250);
  98.         $camera1->setCropSize(250250);
  99.         $camera1->setAllowedExtensions( ['gif''png''jpg''jpeg'] );
  100.         $camera1->enableFileHandling();
  101.         
  102.         $camera2->setSize(250250);
  103.         $camera2->setCropSize(250250);
  104.         $camera2->setAllowedExtensions( ['gif''png''jpg''jpeg'] );
  105.         $camera2->enableFileHandling();
  106.         $camera3->setSize(250250);
  107.         $camera3->setCropSize(250250);
  108.         $camera3->setAllowedExtensions( ['gif''png''jpg''jpeg'] );
  109.         $camera3->enableFileHandling();
  110.         $camera4->setSize(250250);
  111.         $camera4->setCropSize(250250);
  112.         $camera4->setAllowedExtensions( ['gif''png''jpg''jpeg'] );
  113.         $camera4->enableFileHandling();
  114.         $arquivos->setAllowedExtensions( ['gif''png''jpg''jpeg','pdf'] );
  115.         $arquivos->enableFileHandling();
  116.         //$arquivos->enableImageGallery();
  117.         $arquivos->enablePopover('Preview''<img style="max-width:300px" src="download.php?file={file_name}">');
  118.         // Divisão---------------------------------------------------------------------------------
  119.         $label = new TLabel('Imagens da Câmera''#6979BF'12'bi');
  120.         $label->style 'text-align:left;border-bottom: 1px solid gray; width: 100%; padding-top: 20px' ;
  121.         $this->form->addContent( [$label] );
  122.         $row $this->form->addFields( [ $camera1     ],
  123.                                        [ $camera2     ],
  124.                                        [ $camera3     ],
  125.                                        [ $camera4     ]);
  126.         $row->layout = [ 'col-sm-3''col-sm-3''col-sm-3''col-sm-3'];
  127.         // Divisão---------------------------------------------------------------------------------
  128.         $label = new TLabel('Imagens da Galeria''#6979BF'12'bi');
  129.         $label->style 'text-align:left;border-bottom: 1px solid gray; width: 100%; padding-top: 20px' ;
  130.         $this->form->addContent( [$label] );
  131.         $this->form->addFields( [new TLabel('Images')],  [$arquivos] );
  132.         // DESABILITA OS CAMPOS SE FOR EDIÇÃO-------------------------------------------------------
  133.         if (isset($param['key']) )
  134.         {
  135.             $solicitacao_id->setEditable(FALSE);
  136.             $ocor_endereco->setEditable(FALSE);
  137.             $ocor_bairro->setEditable(FALSE);
  138.             $ocor_referencia->setEditable(FALSE);
  139.             $ocor_descricao->setEditable(FALSE);
  140.             $faixa_idade_id->setEditable(FALSE);
  141.             $solicitacao_id->setEditable(FALSE);
  142.             $assunto_id->setEditable(FALSE);
  143.             
  144.             $arquivos->setEditable(FALSE);
  145.             $camera1->setEditable(FALSE);
  146.             $camera2->setEditable(FALSE);
  147.             $camera3->setEditable(FALSE);
  148.             $camera4->setEditable(FALSE);
  149.             //$camera4->disableField('meu_form', $camera4->remove);
  150.                         
  151.             //TField::disableField('meu_form', $camera4->remove);
  152.         }
  153.         // Validações------------------------------------------------------------------------------
  154.         
  155.         $solicitacao_id->addValidation('Tipo de Solicitação' , new TRequiredValidator);
  156.         $assunto_id->addValidation('Assunto'                 , new TRequiredValidator);
  157.         $faixa_idade_id->addValidation('Faixa de Idade'      , new TRequiredValidator);
  158.         $ocor_endereco->addValidation('Endereço'             , new TRequiredValidator);
  159.         $ocor_bairro->addValidation('Bairro'                 , new TRequiredValidator);
  160.         $ocor_referencia->addValidation('Referência'         , new TRequiredValidator);
  161.         $ocor_endereco->addValidation('Endereço'             , new TMaxLengthValidator, [70]);
  162.         $ocor_bairro->addValidation('Bairro'                 , new TMaxLengthValidator, [40]);
  163.         $ocor_referencia->addValidation('Referência'         , new TMaxLengthValidator, [130]);
  164.         // Adiciona os Botões de Ação - addAction(Na barra de Baixo) - addHeaderAction(Na barra de cima)
  165.         $this->form->addAction'Salvar', new TAction( [$this'onSave'] ), 'fa:save green' );
  166.         $this->form->addActionLink'Limpar', new TAction( [$this'onClear'] ), 'fa:eraser red' ); // Executa a ação sem POST
  167.         $this->form->addExpandButton();
  168.         // creates the DataGrid
  169.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  170.         $this->datagrid->width "100%";
  171.         
  172.         // creates the datagrid columns
  173.         $col_data         = new TDataGridColumn('dt_tramita'  'Dt. Movim.' 'center''10%');
  174.         $col_hora         = new TDataGridColumn('hr_tramita'  'Hr. Movim.' 'cente' '10%');
  175.         $col_movimento    = new TDataGridColumn('movimento_id''Tipo'       'left'  '20%');
  176.         $col_destino      = new TDataGridColumn('destino_id'  'Local'      'left'  '20%');
  177.         $col_destinatario = new TDataGridColumn('destinatario''Responsável''left'  '20%');
  178.         $col_despaco      = new TDataGridColumn('despacho'    'Despacho'   'left'  '20%');
  179.         
  180.         $col_data->setTransformer( array($this,'formatDate'));
  181.         //$col_state = new TDataGridColumn('state->name', 'State', 'center', '30%');
  182.         
  183.         $this->datagrid->addColumn($col_data);
  184.         $this->datagrid->addColumn($col_hora);
  185.         $this->datagrid->addColumn($col_movimento);
  186.         $this->datagrid->addColumn($col_destino);
  187.         $this->datagrid->addColumn($col_destinatario);
  188.         $this->datagrid->addColumn($col_despaco);
  189.         // create the datagrid model
  190.         $this->datagrid->createModel();
  191.         
  192.         // creates the page navigation
  193.         $this->pageNavigation = new TPageNavigation;
  194.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  195.         
  196.         // creates the page structure using a table
  197.         $vbox = new TVBox;
  198.         $vbox->style 'width: 100%';
  199.         $vbox->add($this->form);
  200.         $vbox->add(TPanelGroup::pack(''$this->datagrid$this->pageNavigation));
  201.         // // Adiciona o formulário na tela
  202.         // parent::add($this->form);
  203.         // add the table inside the page
  204.         parent::add($vbox);
  205.     }
  206.    
  207.      //======================================================================================================================
  208.     // EDITAR OS DADOS
  209.     //======================================================================================================================
  210.     public function onEdit($param)
  211.     {
  212.         try
  213.         {
  214.             if (isset($param['key']))
  215.             {
  216.                 TTransaction::open('bdados');
  217.                 $key      $param['key'];        // Pega a chave do registro
  218.                 $Processo = new Processo$key ); // Carrega os dados
  219.                 $Processo->arquivos ProcessoArquivos::where('processo_id''='$param['key'])->getIndexedArray('id''arquivo');
  220.                 $this->form->setData($Processo);  // Seta os dados na tela
  221.                 TTransaction::close();
  222.                 return $Processo;
  223.             }
  224.             else
  225.             {
  226.                 $this->form->clear(true);
  227.             }
  228.         }
  229.         catch (exception $e)
  230.         {
  231.             new TMessage('error'$e->getMessage());
  232.             TTransaction::rollback();
  233.         }
  234.     }
  235.     //======================================================================================================================
  236.     // TRANSFORMA A DATA NO PADRÃO BRASILEIRO
  237.     //======================================================================================================================
  238.     public function formatDate($date$object)
  239.     {
  240.         if ($date != NULL){
  241.             $dt = new DateTime($date);
  242.             return $dt->format('d/m/Y');
  243.         }else{
  244.             return NULL;
  245.         }
  246.     }
  247.     //======================================================================================================================
  248.     function onReload($param NULL)
  249.     {
  250.         try
  251.         {
  252.             // open a transaction with database 'samples'
  253.             TTransaction::open('bdados');
  254.             
  255.             // creates a repository for City
  256.             $repository = new TRepository('ProcessoTramitacao');
  257.             $limit 10;
  258.             
  259.             // creates a criteria
  260.             $criteria = new TCriteria;
  261.             
  262.             $criteria->setProperties($param); // order, offset
  263.             $criteria->setProperty('limit'$limit);
  264.             
  265.             if (TSession::getValue('codigo'))
  266.             {
  267.                 // add the filter stored in the session to the criteria
  268.                 $criteria->add(TSession::getValue('codigo'));
  269.             }
  270.             
  271.             // load the objects according to criteria
  272.             $objects $repository->load($criteria);
  273.             
  274.             $this->datagrid->clear();
  275.             if ($objects)
  276.             {
  277.                 // iterate the collection of active records
  278.                 foreach ($objects as $object)
  279.                 {
  280.                     // add the object inside the datagrid
  281.                     $this->datagrid->addItem($object);
  282.                 }
  283.             }
  284.             
  285.             // reset the criteria for record count
  286.             $criteria->resetProperties();
  287.             $count $repository->count($criteria);
  288.             
  289.             $this->pageNavigation->setCount($count); // count of records
  290.             $this->pageNavigation->setProperties($param); // order, page
  291.             $this->pageNavigation->setLimit($limit); // limit
  292.             
  293.             // close the transaction
  294.             TTransaction::close();
  295.             $this->loaded true;
  296.         }
  297.         catch (Exception $e// in case of exception
  298.         {
  299.             new TMessage('error'$e->getMessage()); // shows the exception error message
  300.             TTransaction::rollback(); // undo all pending operations
  301.         }
  302.     }
  303.     function show()
  304.     {
  305.         // check if the datagrid is already loaded
  306.         if (!$this->loaded)
  307.         {
  308.             $this->onReloadfunc_get_arg(0) );
  309.             var_dump($this->loaded);
  310.         }
  311.         parent::show();
  312.     }
  313. }
  314. ?>
Editado 21/11/2023 (há 5 meses) - Clique para ver alterações

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)


PD

O erro está nessa linha:
  1. <?php
  2.    $criteria->add(TSession::getValue('codigo'));
  3. ?>


O $criteria->add() deve receber um objeto da classe TFilter, e não um código ;-)
  1. <?php
  2. $criteria->add( new TFilter( ...) );
  3. ?>