Ação em formulário TWindow dublica janela. Olá, Preciso de uma TWindow para buscar e selecionar vários registros e que no momento que essa TWindow é fechada o datagrid da página que chamou a TWindow seja atualizada. Estou conseguindo esse comportamento utilizando javascript: $window = MinhaTWindow::create('Titulo', 0.8, 0.8); $id = $window->getId(); $param['id_modal'] = $id; $window->myShow($param); unset($param["stat...
BB
Ação em formulário TWindow dublica janela.  
Olá,

Preciso de uma TWindow para buscar e selecionar vários registros e que no momento que essa TWindow é fechada o datagrid da página que chamou a TWindow seja atualizada. Estou conseguindo esse comportamento utilizando javascript:

$window = MinhaTWindow::create('Titulo', 0.8, 0.8); $id = $window->getId(); $param['id_modal'] = $id; $window->myShow($param); unset($param["static"]); $query = AdiantiCoreApplication::buildHttpQuery('MinhaClasse', 'metodo_para_quando_fecharTWindow', $param); TScript::create("$('#$id').bind('dialogclose', function(event) {__adianti_load_page('{$query}');});");


Nessa TWindow tenho uma formulário e um datagrid, esse formulário tem uma ação de busca. Porém quando eu clico no botão "Buscar" ele duplica a minha TWindow, ou seja, cria duas jquery_dialog com ids diferentes e uma janela fica sobreposta a outra..
Já tentei outras soluções:
1. Sobrescrever o método show e adicionar
parent::setIsWrapped(true);

2. Incializar a minha TWindow com
AdiantiCoreApplication::loadPage('MinhaTWindow', 'myShow', $paraml);
. Porém, dessa forma não consigo capturar o id da janela, sendo que preciso para tratar o evento de close.

O que devo fazer?

Obrigada.

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


BB

Tentei também da seguinte forma, adicionando o seguinte codigo na classe que chama o TWindow:
<?php$window->form->addAction('Buscar',  new TAction(array('BuscarContaFaturaWindow', 'onSearch')), 'fa:search blue');?>
NR

Quando a ação de busca é executada, a TWindow é recriada e com isso os ids mudam. Acredito que você tenha que adicionar o código seguinte dentro da window e passar os parâmetros(classe e método) via post/get:
<?php// colocar na classe MinhaWindow//$query = AdiantiCoreApplication::buildHttpQuery('MinhaClasse', 'metodo_para_quando_fecharTWindow', $param);$query = AdiantiCoreApplication::buildHttpQuery($param['classe_retorno'], $param['metodo_retorno'], $param);$id = $this->getId();TScript::create("$('#$id').bind('dialogclose', function(event) {__adianti_load_page('{$query}');});");?>

Obs: lembre de passar os parâmetros de retorno(classe_retorno e metodo_retorno) na ação que executa a busca

E na inicialização da window passe os parâmetros:
<?php$paraml['classe_retorno'] = 'SuaClasse';$paraml['metodo_retorno'] = 'SeuMetodo'];AdiantiCoreApplication::loadPage('MinhaTWindow', 'myShow', $paraml);?>
BB

Olá Nataniel, funcionou. Muito obrigada!

Porém tive que salvar na TSession os dados do formulário que chamaou o TWindow. Senão quando executar
<?php TScript::create("$('#$id').bind('dialogclose', function(event) {__adianti_load_page('{$query}');});");?>
no botão de busca, o formulário perde os dados, fica vazio.
Tem uma outra forma de fazer isso?
OBS: O método de retorno não pode ser estático pois atualizo o datagrid com o operador $this.
NR

Você precisa passar os parâmetros para a ação de busca, assim eles estarão disponíveis:
<?php//$btn_onsearch = $this->form->addAction('Buscar', new TAction([$this, 'onSearch']), 'fa:search #ffffff');$btn_onsearch = $this->form->addAction('Buscar', new TAction([$this, 'onSearch'],$param), 'fa:search #ffffff');?>
BB

Funcionou perfeitamente!

Muito Obrigada :D