Ação no DataGrid sem refresh usando TNotebook Boas, Tenho uma tela de cadastro BootstrapFormBuilder a qual uso o TNotebook. Nesta tela tenho uma Aba para Cadastro (Form), uma Aba para Contatos (Grid) e outra Aba para Documento (Grid). Para Inclusão e Edição de Contatos e Documentos uso uma Tela TWindow, até ai OK. O Problema esta quando eu vou excluir ou o Contato ou o Documento, o qual eu chamo a new TQuestion como interaç...
MC
Ação no DataGrid sem refresh usando TNotebook  
Boas,

Tenho uma tela de cadastro BootstrapFormBuilder a qual uso o TNotebook.

Nesta tela tenho uma Aba para Cadastro (Form), uma Aba para Contatos (Grid) e outra Aba para Documento (Grid).

Para Inclusão e Edição de Contatos e Documentos uso uma Tela TWindow, até ai OK.

O Problema esta quando eu vou excluir ou o Contato ou o Documento, o qual eu chamo a new TQuestion como interação
com o usuário perguntando se o mesmo realmente deseja excluir, (Contato ou Documento) .

O mesmo dá um refresh na tela e ai tudo desaparece.

Tem como desabilitar isso ?

Porque Isso não funciona ? $this->DtGridCtt->getItems()


Segue código e Telas.


 
  1. <?php
  2. //= Contatos ===================================================================
  3. //---- Exclusao ------------------------------------------------------------
  4. public function onDelCtt( $param )
  5. {
  6. // Acao do botao Sim
  7. $actsim = new TAction( array( $this, 'DelCtt'));
  8. $actsim->setParameters( $param );
  9. // Acao do botao Nao
  10. $actnao = new TAction( array( $this, 'onEdit'));
  11. $actnao->setParameter('key', TSession::getValue('ForID'));
  12. // Carrega as Informações da Grid
  13. foreach ( $this->DtGridCtt->getItems() as $item) // não funciona ??
  14. {
  15. if ( $item->CTT_ID == $param['CTT_ID'] ) $nome = $dat->CTT_NOME;
  16. }
  17. new TQuestion( 'CONTATO: <b>'.$param['CTT_ID'].' - '.$nome.'</b><br>'.
  18. 'Você realmente quer EXCLUIR este CONTATO?', $actsim, $actnao );
  19. }
  20. //--------------------------------------------------------------------------
  21. public function DelCtt( $param )
  22. {
  23. try
  24. {
  25. $key = $param['key'];
  26. TTransaction::open( MkSgc_Geral );
  27. $object = new TblPesContato( $key, FALSE);
  28. $pesid = $object->CTT_PESID;
  29. // $object->delete();
  30. TTransaction::close();
  31. $act = new TAction( array( $this, 'onEdit'));
  32. $act->setParameter('key', $pesid );
  33. new TMessage( 'info', 'Contato Excluido', $act );
  34. }
  35. catch (Exception $e)
  36. {
  37. new TMessage( 'error', $e->getMessage());
  38. TTransaction::rollback();
  39. }
  40. }
  41. ?>







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


NR

Marco, sempre que a página é recarregada as informações do formulário são perdidas, por isso a necessidade de utilizar getData e setData. No seu caso, as ações padrão da grid usam GET ao invés de POST, por isso você não vai conseguir capturar os dados via getData. Veja que o exemplo de master/detail do tutor não usa as ações normais na grid de detail, ele cria botões para fazer o POST e manter as informações preenchidas. adianti.com.br/framework_files/tutor/index.php?class=SaleForm&me

Além dessa opção de usar botões você também pode transformar essas funções em static(não haverá recarga de tela) e remover/ocultar a linha deletada via javascript.
MC

Nataniel, obrigado pela resposta, vou analisar as opções.