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?
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?
- <?php
- use Adianti\Control\TPage;
- use Adianti\Control\TAction;
- use Adianti\Widget\Dialog\TMessage;
- use Adianti\Wrapper\BootstrapFormBuilder;
- class ProcessoAnonimoFormTeste extends TPage
- {
- private $form;
- // trait with saveFile, saveFiles, ...
- use Adianti\Base\AdiantiFileSaveTrait;
- // trait with onReload, onSearch, onDelete...
- use Adianti\Base\AdiantiStandardListTrait;
- public function __construct($param)
- {
- parent::__construct();
- // $this->setDatabase('bdados'); // defines the database
- // $this->setActiveRecord('ProcessoTramitacao'); // defines the active record
- // $this->addFilterField('codigo', '=', 'codigo'); // filter field, operator, form field
- // $this->setDefaultOrder('id', 'desc'); // define the default order
- // $criteria = new TCriteria();
- // $criteria->add(new TFilter('codigo','=',TSession::getValue('codigo')));
- // $this->setCriteria($criteria);
- //------------------------------------------------------------------------------------------
- // Formulário
- //------------------------------------------------------------------------------------------
- $this->form = new BootstrapFormBuilder('meu_form');
- $this->form->setFormTitle('<b>Manifestação</b>');
- $this->form->setClientValidation( true ); // Habilita as validações nativas do HTML no Cliente(tips)
- $this->form->setFieldSizes('100%'); //IMPORTANTE!!! Puxa todos os campos do formulário para 100%
- //------------------------------------------------------------------------------------------
- // Cria os Elementos
- //------------------------------------------------------------------------------------------
- $id = new THidden('id');
- $codigo = new THidden('codigo');
- $dt_cadastro = new TDate('dt_cadastro');
- $hr_cadastro = new TTime('hr_cadastro');
- $contato_id = new THidden('contato_id');
- $ocor_endereco = new TEntry('ocor_endereco');
- $ocor_bairro = new TEntry('ocor_bairro');
- $ocor_referencia = new TEntry('ocor_referencia');
- $ocor_descricao = new TText('ocor_descricao');
- $faixa_idade_id = new TDBCombo('faixa_idade_id', 'bdados', 'FaixaIdade' , 'id', 'descricao');
- $solicitacao_id = new TDBCombo('solicitacao_id', 'bdados', 'Solicitacao' , 'id', 'descricao');
- $assunto_id = new TDBCombo('assunto_id', 'bdados', 'Assunto' , 'id', 'descricao');
- //------------------------------------------------------------------------------------------
- // Configurações dos campos
- //------------------------------------------------------------------------------------------
- $contato_id->setValue(1);
- $dt_cadastro->setDatabaseMask('yyyy-mm-dd');
- $ocor_endereco->forceUpperCase();
- $ocor_bairro->forceUpperCase();
- $ocor_referencia->forceUpperCase();
- $assunto_id->enableSearch();
- $id->setEditable(FALSE);
- $dt_cadastro->setEditable(FALSE);
- $hr_cadastro->setEditable(FALSE);
- //------------------------------------------------------------------------------------------
- // Adiciona os campos no form
- //------------------------------------------------------------------------------------------
- $this->form->appendPage('Dados da Manifestação');
- $this->form->addFields( [ $id ] )->style = 'display:none';
- $this->form->addFields( [ $codigo ] )->style = 'display:none';
- $this->form->addFields( [ $dt_cadastro ] )->style = 'display:none';
- $this->form->addFields( [ $hr_cadastro ] )->style = 'display:none';
- $this->form->addFields( [ $contato_id ] )->style = 'display:none';
- $row = $this->form->addFields( [ new TLabel('Tipo de Solicitação') , $solicitacao_id ],
- [ new TLabel('Assunto') , $assunto_id ],
- [ new TLabel('Faixa de Idade') , $faixa_idade_id ]);
- $row->layout = [ 'col-sm-3', 'col-sm-7', 'col-sm-2'];
- // Divisão---------------------------------------------------------------------------------
- $label = new TLabel('Dados da Manifestação', '#6979BF', 12, 'bi');
- $label->style = 'text-align:left;border-bottom: 1px solid gray; width: 100%; padding-top: 20px' ;
- $this->form->addContent( [$label] );
- // Linha-----------------------------------------------------------------------------------
- $row = $this->form->addFields( [ new TLabel('Endereço') ,$ocor_endereco ],
- [ new TLabel('Bairro') ,$ocor_bairro ]);
- $row->layout = [ 'col-sm-8', 'col-sm-4'];
- // Linha-----------------------------------------------------------------------------------
- $row = $this->form->addFields( [ new TLabel('Referência') ,$ocor_referencia ]);
- $row->layout = [ 'col-sm-12' ];
- // Linha-----------------------------------------------------------------------------------
- $row = $this->form->addFields( [ new TLabel('Descrição') ,$ocor_descricao ]);
- $row->layout = [ 'col-sm-12' ];
- // Anexos-----------------------------------------------------------------------------------
- $this->form->appendPage('Anexos');
- $camera1 = new TImageCapture('camera1');
- $camera2 = new TImageCapture('camera2');
- $camera3 = new TImageCapture('camera3');
- $camera4 = new TImageCapture('camera4');
- $arquivos = new TMultiFile('arquivos');
- $camera1->setSize(250, 250);
- $camera1->setCropSize(250, 250);
- $camera1->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg'] );
- $camera1->enableFileHandling();
- $camera2->setSize(250, 250);
- $camera2->setCropSize(250, 250);
- $camera2->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg'] );
- $camera2->enableFileHandling();
- $camera3->setSize(250, 250);
- $camera3->setCropSize(250, 250);
- $camera3->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg'] );
- $camera3->enableFileHandling();
- $camera4->setSize(250, 250);
- $camera4->setCropSize(250, 250);
- $camera4->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg'] );
- $camera4->enableFileHandling();
- $arquivos->setAllowedExtensions( ['gif', 'png', 'jpg', 'jpeg','pdf'] );
- $arquivos->enableFileHandling();
- //$arquivos->enableImageGallery();
- $arquivos->enablePopover('Preview', '<img style="max-width:300px" src="download.php?file={file_name}">');
- // Divisão---------------------------------------------------------------------------------
- $label = new TLabel('Imagens da Câmera', '#6979BF', 12, 'bi');
- $label->style = 'text-align:left;border-bottom: 1px solid gray; width: 100%; padding-top: 20px' ;
- $this->form->addContent( [$label] );
- $row = $this->form->addFields( [ $camera1 ],
- [ $camera2 ],
- [ $camera3 ],
- [ $camera4 ]);
- $row->layout = [ 'col-sm-3', 'col-sm-3', 'col-sm-3', 'col-sm-3'];
- // Divisão---------------------------------------------------------------------------------
- $label = new TLabel('Imagens da Galeria', '#6979BF', 12, 'bi');
- $label->style = 'text-align:left;border-bottom: 1px solid gray; width: 100%; padding-top: 20px' ;
- $this->form->addContent( [$label] );
- $this->form->addFields( [new TLabel('Images')], [$arquivos] );
- // DESABILITA OS CAMPOS SE FOR EDIÇÃO-------------------------------------------------------
- if (isset($param['key']) )
- {
- $solicitacao_id->setEditable(FALSE);
- $ocor_endereco->setEditable(FALSE);
- $ocor_bairro->setEditable(FALSE);
- $ocor_referencia->setEditable(FALSE);
- $ocor_descricao->setEditable(FALSE);
- $faixa_idade_id->setEditable(FALSE);
- $solicitacao_id->setEditable(FALSE);
- $assunto_id->setEditable(FALSE);
- $arquivos->setEditable(FALSE);
- $camera1->setEditable(FALSE);
- $camera2->setEditable(FALSE);
- $camera3->setEditable(FALSE);
- $camera4->setEditable(FALSE);
- //$camera4->disableField('meu_form', $camera4->remove);
- //TField::disableField('meu_form', $camera4->remove);
- }
- // Validações------------------------------------------------------------------------------
- $solicitacao_id->addValidation('Tipo de Solicitação' , new TRequiredValidator);
- $assunto_id->addValidation('Assunto' , new TRequiredValidator);
- $faixa_idade_id->addValidation('Faixa de Idade' , new TRequiredValidator);
- $ocor_endereco->addValidation('Endereço' , new TRequiredValidator);
- $ocor_bairro->addValidation('Bairro' , new TRequiredValidator);
- $ocor_referencia->addValidation('Referência' , new TRequiredValidator);
- $ocor_endereco->addValidation('Endereço' , new TMaxLengthValidator, [70]);
- $ocor_bairro->addValidation('Bairro' , new TMaxLengthValidator, [40]);
- $ocor_referencia->addValidation('Referência' , new TMaxLengthValidator, [130]);
- // Adiciona os Botões de Ação - addAction(Na barra de Baixo) - addHeaderAction(Na barra de cima)
- $this->form->addAction( 'Salvar', new TAction( [$this, 'onSave'] ), 'fa:save green' );
- $this->form->addActionLink( 'Limpar', new TAction( [$this, 'onClear'] ), 'fa:eraser red' ); // Executa a ação sem POST
- $this->form->addExpandButton();
- // creates the DataGrid
- $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
- $this->datagrid->width = "100%";
- // creates the datagrid columns
- $col_data = new TDataGridColumn('dt_tramita' , 'Dt. Movim.' , 'center', '10%');
- $col_hora = new TDataGridColumn('hr_tramita' , 'Hr. Movim.' , 'cente' , '10%');
- $col_movimento = new TDataGridColumn('movimento_id', 'Tipo' , 'left' , '20%');
- $col_destino = new TDataGridColumn('destino_id' , 'Local' , 'left' , '20%');
- $col_destinatario = new TDataGridColumn('destinatario', 'Responsável', 'left' , '20%');
- $col_despaco = new TDataGridColumn('despacho' , 'Despacho' , 'left' , '20%');
- $col_data->setTransformer( array($this,'formatDate'));
- //$col_state = new TDataGridColumn('state->name', 'State', 'center', '30%');
- $this->datagrid->addColumn($col_data);
- $this->datagrid->addColumn($col_hora);
- $this->datagrid->addColumn($col_movimento);
- $this->datagrid->addColumn($col_destino);
- $this->datagrid->addColumn($col_destinatario);
- $this->datagrid->addColumn($col_despaco);
- // create the datagrid model
- $this->datagrid->createModel();
- // creates the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- // creates the page structure using a table
- $vbox = new TVBox;
- $vbox->style = 'width: 100%';
- $vbox->add($this->form);
- $vbox->add(TPanelGroup::pack('', $this->datagrid, $this->pageNavigation));
- // // Adiciona o formulário na tela
- // parent::add($this->form);
- // add the table inside the page
- parent::add($vbox);
- }
- //======================================================================================================================
- // EDITAR OS DADOS
- //======================================================================================================================
- public function onEdit($param)
- {
- try
- {
- if (isset($param['key']))
- {
- TTransaction::open('bdados');
- $key = $param['key']; // Pega a chave do registro
- $Processo = new Processo( $key ); // Carrega os dados
- $Processo->arquivos = ProcessoArquivos::where('processo_id', '=', $param['key'])->getIndexedArray('id', 'arquivo');
- $this->form->setData($Processo); // Seta os dados na tela
- TTransaction::close();
- return $Processo;
- }
- else
- {
- $this->form->clear(true);
- }
- }
- catch (exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- //======================================================================================================================
- // TRANSFORMA A DATA NO PADRÃO BRASILEIRO
- //======================================================================================================================
- public function formatDate($date, $object)
- {
- if ($date != NULL){
- $dt = new DateTime($date);
- return $dt->format('d/m/Y');
- }else{
- return NULL;
- }
- }
- //======================================================================================================================
- function onReload($param = NULL)
- {
- try
- {
- // open a transaction with database 'samples'
- TTransaction::open('bdados');
- // creates a repository for City
- $repository = new TRepository('ProcessoTramitacao');
- $limit = 10;
- // creates a criteria
- $criteria = new TCriteria;
- $criteria->setProperties($param); // order, offset
- $criteria->setProperty('limit', $limit);
- if (TSession::getValue('codigo'))
- {
- // add the filter stored in the session to the criteria
- $criteria->add(TSession::getValue('codigo'));
- }
- // load the objects according to criteria
- $objects = $repository->load($criteria);
- $this->datagrid->clear();
- if ($objects)
- {
- // iterate the collection of active records
- foreach ($objects as $object)
- {
- // add the object inside the datagrid
- $this->datagrid->addItem($object);
- }
- }
- // reset the criteria for record count
- $criteria->resetProperties();
- $count = $repository->count($criteria);
- $this->pageNavigation->setCount($count); // count of records
- $this->pageNavigation->setProperties($param); // order, page
- $this->pageNavigation->setLimit($limit); // limit
- // close the transaction
- TTransaction::close();
- $this->loaded = true;
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- function show()
- {
- // check if the datagrid is already loaded
- if (!$this->loaded)
- {
- $this->onReload( func_get_arg(0) );
- var_dump($this->loaded);
- }
- parent::show();
- }
- }
- ?>
Editado 21/11/2023 (há 10 meses) - Clique para ver alterações
O erro está nessa linha:
O $criteria->add() deve receber um objeto da classe TFilter, e não um código ;-)