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.
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.
- <?php
- //= Contatos ===================================================================
- //---- Exclusao ------------------------------------------------------------
- public function onDelCtt( $param )
- {
- // Acao do botao Sim
- $actsim = new TAction( array( $this, 'DelCtt'));
- $actsim->setParameters( $param );
- // Acao do botao Nao
- $actnao = new TAction( array( $this, 'onEdit'));
- $actnao->setParameter('key', TSession::getValue('ForID'));
- // Carrega as Informações da Grid
- foreach ( $this->DtGridCtt->getItems() as $item) // não funciona ??
- {
- if ( $item->CTT_ID == $param['CTT_ID'] ) $nome = $dat->CTT_NOME;
- }
- new TQuestion( 'CONTATO: <b>'.$param['CTT_ID'].' - '.$nome.'</b><br>'.
- 'Você realmente quer EXCLUIR este CONTATO?', $actsim, $actnao );
- }
- //--------------------------------------------------------------------------
- public function DelCtt( $param )
- {
- try
- {
- $key = $param['key'];
- TTransaction::open( MkSgc_Geral );
- $object = new TblPesContato( $key, FALSE);
- $pesid = $object->CTT_PESID;
- // $object->delete();
- TTransaction::close();
- $act = new TAction( array( $this, 'onEdit'));
- $act->setParameter('key', $pesid );
- new TMessage( 'info', 'Contato Excluido', $act );
- }
- catch (Exception $e)
- {
- new TMessage( 'error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
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.
Nataniel, obrigado pela resposta, vou analisar as opções.