Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Reload DataGrid Boa tarde!! Pessoal , eu sobrescrevi o método onSave , mas não estou conseguindo recarregar o dataGrid após o onSave; ...
WR
Reload DataGrid  
Boa tarde!!
Pessoal , eu sobrescrevi o método onSave , mas não estou conseguindo recarregar o dataGrid após o onSave;


  1. <?php
  2.  /**
  3.      * Overloaded method onSave()
  4.      * Executed whenever the user clicks at the save button
  5.      */
  6.     public function onSave($param)
  7.     {
  8.         try
  9.         {
  10.             TTransaction::open('sirvo');
  11.             
  12.             // form validations
  13.             $this->form->validate();
  14.             
  15.             // get form data
  16.             $data   $this->form->getData();
  17.             
  18.             // store product
  19.             $object = new Veiculo;
  20.             $object->fromArray( (array) $data);
  21.             $object->store();
  22.             
  23.             // copy file to target folder
  24.             $this->saveFile($object$data'foto_path''app/images');
  25.             
  26.             // send id back to the form
  27.             $data->id $object->id;
  28.             $this->form->setData($data);
  29.                        
  30.             $this->onReload(); // reload the items
  31.             
  32.             TTransaction::close();
  33.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  34.             
  35.         }
  36.         catch (Exception $e)
  37.         {
  38.             $this->form->setData($this->form->getData());
  39.             new TMessage('error'$e->getMessage());
  40.             TTransaction::rollback();
  41.         }
  42.     }
  43.     
  44.     /**
  45.      * method onReload()
  46.      * Load the datagrid with the database objects
  47.      */
  48.     function onReload($param NULL)
  49.     {
  50.         try
  51.         {
  52.             // open a transaction with database 
  53.             TTransaction::open('sirvo');
  54.             
  55.             $order    = isset($param['order']) ? $param['order'] : 'id';
  56.             // load the objects according to criteria
  57.             $veiculos Veiculo::orderBy($order)->load();
  58.             
  59.             $this->datagrid->clear();
  60.             if ($veiculos)
  61.             {
  62.                 // iterate the collection of active records
  63.                 foreach ($veiculos as $veiculo)
  64.                 {
  65.                     // add the object inside the datagrid
  66.                     $this->datagrid->addItem($veiculo);
  67.                 }
  68.             }
  69.             // close the transaction
  70.             TTransaction::close();
  71.             $this->loaded true;
  72.         }
  73.         catch (Exception $e// in case of exception
  74.         {
  75.             // shows the exception error message
  76.             new TMessage('error'$e->getMessage());
  77.             
  78.             // undo all pending operations
  79.             TTransaction::rollback();
  80.         }
  81.     }
  82. ?>

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


MG

Não sei qual a mensagem de erro, mas eu mudaria o $this->onReload() para depois do TTransaction::close() em onSave.
Tente fazer isso.
WR

Olá Marcelo Gomes, na verdade não dá erro nenhum, só não recarrega o grid.
Mas fiz o que você sugeriu e funcionou de boa. A gente olha umas trezentas vezes e não vê o erro!
Por isso é sempre bom alguém de fora dar uma olhadinha!!

Obrigado pela ajuda!!

Abraços
MG

Não por isso. São detalhes, você estava chamando o onReload dentro de uma transação em andamento. E dentro do onReload, você abria outra.....
Estamos aqui pra ajudar!
Abraços