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

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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