Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Manter o filtro após clicar no pesquisar ou paginação Ivan, como faço para recuperar os mesmos valores digitados no filtro ... na próxima paginação ?! Vou te mostrar a imagem ... e após o clique no botão PESQUISAR, minha consulta é retornada corretamente, mas as datas que havia digitado ...eles somem !!! queria que elas permanecessem lá no edit ... para a proxima paginação ser atualizada com o mesmo filtro. Grato...
IM
Manter o filtro após clicar no pesquisar ou paginação  
Ivan, como faço para recuperar os mesmos valores digitados no filtro ... na próxima paginação ?!
Vou te mostrar a imagem ... e após o clique no botão PESQUISAR, minha consulta é retornada corretamente, mas as datas que havia digitado ...eles somem !!! queria que elas permanecessem lá no edit ... para a proxima paginação ser atualizada com o mesmo filtro.
Grato

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


IF

Oi Ico, acho que tem que fazer isso
 
  1. <?php
  2. $data = $this->form->getData(); //Captura os dados do form
  3. ...
  4. $this->form->setData($data); //Recarrega os dados no form
  5. ?>
IM

Boa tarde, Ivan.
Será que é possivel a gente conversar em particular ... via skype, talvez! ?
icomenezes@hotmail.com
IM

Ivan ... passei o dia inteiro criando sessão pra resolver isso ...
e vc com uma simples linha resolveu
showwwww
deu certo, parceiro@!
IF

Show Ico!! Que bom que conseguiu resolver! Abraço
IM

Ivan, e neste caso ... eu estou atribuindo uma função ao clicar no navigator que faz esse rotina
só que veja que to passando uma data manual ...
como faço para chamar a data que está no edit da tela ...
pq a linha $this->form->setData($data) não tá preenchendo não ..

 
  1. <?php
  2. function onNavigator($param)
  3. {
  4. $filter = new stdClass();
  5. $filter->dt1 = '01/06/2018';
  6. $filter->dt2 = '01/08/2018';
  7. var_dump($filter);
  8. $this->pageNavigation->setProperties($param); // parametros de pagina, limit, order
  9. $this->onReload($param,$filter);
  10. $this->form->setData($filter);
  11. }
  12. ?>


IM

perdoa, o getData não preenche!
IF

Poste o seu código pra eu ver como vc está fazendo o envio do form
IM

Ivan, segue o cod completo!
Eu quero usar a paginação ... assim ... eu recebo um json
faço um array de 10 em 10 registros ...
e pego um index (conforme a pag que estou na navigator)
aí quando tem um filtro ... quero usar o filtro e o param de paginas
 
  1. <?php
  2. class ContainerTableParcelasJson extends TPage
  3. {
  4. private $datagrid;
  5. private $pageNavigation;
  6. public function __construct()
  7. {
  8. parent::__construct();
  9. // creates one datagrid
  10. $this->datagrid = new BootstrapDatagridWrapper(new TQuickGrid);
  11. // creates the form
  12. $this->form = new TQuickForm('form_search_parcelas');
  13. $this->form->setFormTitle('Defina o filtro');
  14. $this->form->class = 'tform';
  15. $dt1 = new TDate('dt1');
  16. $dt2 = new TDate('dt2');
  17. $dt1->setMask( 'dd/mm/yyyy' );
  18. $dt2->setMask( 'dd/mm/yyyy' );
  19. $this->form->addQuickField('Data Inicial:', $dt1, '50%');
  20. $this->form->addQuickField('Data Final:', $dt2, '50%');
  21. $this->form->addQuickAction('Pesquisar:', new TAction(array($this, 'onSearch')), 'fa:search blue'); // botao pesquisar
  22. $this->form->addQuickAction('ConfirmarFiltro:', new TAction(array($this, 'onConfirmar')), 'fa:search red'); // botao pesquisar
  23. // keep the form filled with the search data
  24. $dt1->setValue(TSession::getValue('dt1'));
  25. $dt2->setValue(TSession::getValue('dt2'));
  26. // add the columns
  27. $this->datagrid->addQuickColumn('Cod', 'cod', 'center', 50);
  28. $this->datagrid->addQuickColumn('Nome', 'nome', 'left', 350);
  29. $this->datagrid->addQuickColumn('Valor', 'valor', 'left', 150);
  30. $this->datagrid->addQuickColumn('Vencimento', 'dt_vcto', 'left', 150);
  31. //$this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
  32. $action1 = new TDataGridAction(array($this, 'onView'));
  33. $action2 = new TDataGridAction(array($this, 'onDelete'));
  34. $arrayDados = array('cod', 'nome', 'valor', 'dt_vcto', 'id_loja', 'nomeloja', 'parte', 'referencia');
  35. // add the actions
  36. $this->datagrid->addQuickAction('Cadastro', $action1, $arrayDados, 'ico_find.png', 50);
  37. $this->datagrid->addQuickAction('Baixar', $action2, $arrayDados, 'ico_delete.png', 50);
  38. $action1->setUseButton(TRUE);
  39. $action1->setButtonClass('btn btn-default');
  40. $action1->setImage('fa:search blue');
  41. $action2->setUseButton(TRUE);
  42. $action2->setButtonClass('btn btn-default');
  43. $action2->setImage('fa:remove red');
  44. // creates the datagrid model
  45. $this->datagrid->createModel();
  46. // creates the page navigation
  47. $this->pageNavigation = new TPageNavigation;
  48. $this->pageNavigation->setAction(new TAction(array($this, 'onNavigator')));
  49. $this->pageNavigation->setWidth($this->datagrid->getWidth());
  50. $panel = new TPanelGroup('Lista');
  51. $panel->add($this->datagrid);
  52. $panel->addFooter('Resumo');
  53. // wrap the page content using vertical box
  54. $vbox = new TVBox;
  55. $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  56. $vbox->add($this->form); // add a row to the form
  57. $vbox->add($panel);
  58. $vbox->add($this->pageNavigation);
  59. parent::add($vbox);
  60. }
  61. /**
  62. * Load the data into the datagrid
  63. */
  64. function onReload($param=NULL, $filter=NULL)
  65. {
  66. var_dump($param);
  67. var_dump($filter);
  68. $this->datagrid->clear();
  69. $data1 = date("d/m/Y");
  70. $data2 = date("d/m/Y");
  71. if (empty(!$filter)) {
  72. try
  73. {
  74. $atual = 1;
  75. $data1 = $filter->dt1;
  76. $data2 = $filter->dt2;
  77. if (!empty($param)) {
  78. $atual= $param['page'];
  79. }
  80. $location = "http://testserver:testserver@localhost:8085/eventos/GetDadosPromiss?dataini={$data1}&datafim={$data2}";
  81. echo $location;
  82. $resultado = Uteis::LerJSON($location);
  83. $totalregistros = count($resultado);
  84. $qtd = 10;
  85. $pagArquivo = array_chunk($resultado, $qtd);
  86. $contar = count($pagArquivo);
  87. if (!empty($resultado)) {
  88. $resultado = $pagArquivo[$atual-1];
  89. foreach ($resultado as $valor) {
  90. $item = new StdClass;
  91. $item->cod = $valor->id_cli;
  92. $item->nome = $valor->nomecliente;
  93. $item->valor = $valor->valor;
  94. //setNumericMask(2,',','.',True);
  95. $item->dt_vcto = $valor->dt_vcto;
  96. $item->id_loja = $valor->id_loja;
  97. $item->nomeloja = $valor->nomeloja;
  98. $item->parte = $valor->parte;
  99. $item->referencia = $valor->referencia;
  100. $this->datagrid->addItem($item);
  101. }
  102. $this->pageNavigation->setCount($totalregistros); // Quantidade de registros
  103. $this->pageNavigation->setProperties($param); // parametros de pagina, limit, order
  104. $this->pageNavigation->setLimit($qtd); // Limite de registro por página!
  105. $this->loaded = true;
  106. }
  107. }
  108. catch (Exception $e)
  109. {
  110. echo 'Error: '. $e->getMessage();
  111. }
  112. } else {
  113. new TMessage('info', 'Nenhum filtro add');
  114. }
  115. } // fim da funcao onReload
  116. function onSearch()
  117. {
  118. // get the search form data
  119. $data = $this->form->getData();
  120. $this->onReload('', $data);
  121. $this->form->setData($data);
  122. }
  123. //* verificar filtros em tempo de exec
  124. function onConfirmar()
  125. {
  126. }
  127. function onDelete($param)
  128. {
  129. // get the parameter and shows the message
  130. //var_dump($param);
  131. $nome=$param['nome'];
  132. new TMessage('error', "Deseja realmente baixar o registro do cliente: $nome");
  133. }
  134. function onView($param)
  135. {
  136. // get the parameter and shows the message
  137. $nome=$param['nome'];
  138. $loja=$param['nomeloja'];
  139. $ref =$param['referencia'];
  140. new TMessage('info', "Cliente : $nome </br >".
  141. "Loja : $loja </br >".
  142. "referencia : $ref </br >" );
  143. $this->pageNavigation->setProperties($param); // parametros de pagina, limit, order
  144. $this->onReload($param);
  145. }
  146. //* Funcão onNavigator
  147. function onNavigator($param)
  148. {
  149. $filter = new stdClass();
  150. $filter->dt1 = $param['dt1']; // aqui eu preciso pegar os valores que já estão no filtro atual
  151. $filter->dt2 = $param['dt2'];
  152. var_dump($filter);
  153. $this->pageNavigation->setProperties($param); // parametros de pagina, limit, order
  154. $this->onReload($param,$filter);
  155. $this->form->setData($filter);
  156. }
  157. function show()
  158. {
  159. if ($this->loaded)
  160. {
  161. $this->onReload();
  162. }
  163. parent::show();
  164. }
  165. }
  166. ?>
IM

se puder, já me auxila como faço para valores boolean ficarem como BAIXADO E NÂO BAIXADO na grid ...
bem como o valor ficar monetário ... pois não consegui acerta isso ainda ...Grato!
sou iniciante ... kkkkkkk 5 dias de php só ..
até que já to indo longe!
IF

Tá, vamos por partes. Vc vai ter que colocar os valores do form em sessão:

 
  1. <?php
  2. function onSearch()
  3. {
  4. // get the search form data
  5. $data = $this->form->getData();
  6. // clear session filters
  7. TSession::setValue('dt1', NULL);
  8. TSession::setValue('dt2', NULL);
  9. if (isset($data->dt1) AND ($data->dt1)) {
  10. TSession::setValue('dt1', $data->dt1);
  11. }
  12. if (isset($data->dt2) AND ($data->dt2)) {
  13. TSession::setValue('dt2', $data->dt2);
  14. }
  15. $this->onReload('', $data);
  16. $this->form->setData($data);
  17. }
  18. //no onNavigator...
  19. public function onNavigator($param)
  20. ?>
IF

 
  1. <?php
  2. public function onNavigator($param)
  3. {
  4. ...
  5. $filter->dt1 = TSession::getValue('dt1');
  6. $filter->dt2 = TSession::getValue('dt2');
  7. ...
  8. }
  9. ?>
IF

Como vc é novo no PHP, seria bom vc dar uma olhada (estudada) no tutor do Adianti, que inclusive tem a resposta pra sua dúvida quanto a formatação de valores na Datagrid: https://www.adianti.com.br/framework_files/tutor/index.php?class=DatagridTransfo
IM

Ivan,
com suas alterações, ficou assim:Warning:

Creating default object from empty value in C:wamp64wwwico_menezesappcontrolapresentacaoContainerTableParcelasJson.class.php on line 196

a linha é essa:
 
  1. <?php function onNavigator($param)
  2. {
  3. $filter->dt1 = TSession::getValue('dt1'); //linha 196
  4. $filter->dt2 = TSession::getValue('dt2');
  5. $this->pageNavigation->setProperties($param); // parametros de pagina, limit, order
  6. $this->onReload($param,$filter);
  7. ?>

IF

Ico, eu só te dei uma noção de como pegar o valor da sessão. A sua variável $filter continua como estava no método onNavigator onde vc criou uma StdClass.
IF

 
  1. <?php
  2. //* Funcão onNavigator
  3. function onNavigator($param)
  4. {
  5. $filter = new stdClass();
  6. $filter->dt1 = TSession::getValue('dt1');
  7. $filter->dt2 = TSession::getValue('dt2');
  8. var_dump($filter);
  9. $this->pageNavigation->setProperties($param); // parametros de pagina, limit, order
  10. $this->onReload($param,$filter);
  11. $this->form->setData($filter);
  12. }
  13. ?>
IM

Show ! Perfeito agora
FS

Bom Dia Meu Povo

As dores do ICO sao as minhas tambem... As vezes ficamos horas e horas num problema que dá vontade de chutar o balde...

Ico Menezes: ( 2018-07-06)
Ivan ... passei o dia inteiro criando sessão pra resolver isso ...
e vc com uma simples linha resolveu
showwwww
deu certo, parceiro@!