Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TStandartList - Comportamento do Filtro "salvo" Boa noite, Estou com um comportamento considerado estranho (pelo menos para mim) e quero saber se tem como contornar. Executo um filtro, ele me traz os registros, saio deste grid para de outra tabela, volto para ele e o formulario continua com o conteudo do filtro quando usei a tela primeira vez. Para contornar isso coloquei $this->form->Clear(); até ai tudo bem, mas o grid continua filtrado...
EN
TStandartList - Comportamento do Filtro "salvo"  
Boa noite,

Estou com um comportamento considerado estranho (pelo menos para mim) e quero saber se tem como contornar. Executo um filtro, ele me traz os registros, saio deste grid para de outra tabela, volto para ele e o formulario continua com o conteudo do filtro quando usei a tela primeira vez. Para contornar isso coloquei $this->form->Clear(); até ai tudo bem, mas o grid continua filtrado até que o usuario clique em filtrar com o form em branco.

Como arrumo isso?

  1. <?php
  2. class ClientesViewList extends TStandardList
  3. {
  4.     protected $form;     // registration form
  5.     protected $datagrid// listing
  6.     protected $pageNavigation;
  7.     protected $formgrid;
  8.     protected $deleteButton;
  9.     protected $transformCallback;
  10.     
  11.     /**
  12.      * Page constructor
  13.      */
  14.     public function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         parent::setDatabase('clientes');            // defines the database
  19.         parent::setActiveRecord('Clientes');   // defines the active record
  20.         parent::setDefaultOrder('id''asc');         // defines the default order
  21.         // parent::setCriteria($criteria) // define a standard filter
  22.         parent::addFilterField('nome''like''nome'); // filterField, operator, formField
  23.         parent::addFilterField('aniversario''=''aniversario'); // filterField, operator, formField
  24.         parent::addFilterField('telefone1''like''telefone1'); // filterField, operator, formField
  25.         parent::addFilterField('endereco''like''endereco'); // filterField, operator, formField
  26.         
  27.         // creates the form
  28.         $this->form = new BootstrapFormBuilder('form_search_Clientes');
  29.         $this->form->setFormTitle('Clientes Listar');
  30.         
  31.         // create the form fields
  32.         $nome        = new TEntry('nome');
  33.         $telefone1   = new TEntry('telefone1');
  34.         $endereco    = new TEntry('endereco');
  35.         $aniversario = new TDate('aniversario');
  36.         $aniversario->setmask('dd/mm/yyyy');
  37.         // add the fields
  38.         $this->form->addFields( [new TLabel('Nome')], [$nome] );
  39.         $this->form->addFields( [new TLabel('Telefone')], [$telefone1] );
  40.         $this->form->addFields( [new TLabel('Endereço')], [$endereco] );
  41.         $this->form->addFields( [new TLabel('Aniversário')], [$aniversario] );
  42.         
  43.         // keep the form filled during navigation with session data
  44.         $this->form->setDataTSession::getValue('Clientes_filter_data') );
  45.         
  46.         // add the search form actions
  47.         $this->form->addAction('Filtra'       , new TAction(array($this'onSearch')), 'fa:search');
  48.         $this->form->addAction('Limpa Filtro' , new TAction(array($this'onClear')), 'fa:eraser red' );
  49.         $this->form->addAction('Novo'         , new TAction(array('ClientesViewForm''onEdit')), 'bs:plus-sign green');
  50.       
  51.         $this->form->Clear();
  52.         
  53.         
  54.         // creates a DataGrid
  55.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  56.         
  57.         $this->datagrid->style 'width: 100%';
  58.         $this->datagrid->setHeight(320);
  59.         
  60.         // creates the datagrid columns
  61.         $column_id         = new TDataGridColumn('id''Id''center'50);
  62.         $column_nome       = new TDataGridColumn('nome''Nome''left');
  63.         $column_telefone1  = new TDataGridColumn('telefone1''Telefone''left');
  64.         $column_aniversario= new TDataGridColumn('aniversario''Aniversário''left');
  65.        
  66.         
  67.         $column_endereco   = new TDataGridColumn('endereco''Endereço''left');
  68.         
  69.         // add the columns to the DataGrid
  70.         $this->datagrid->addColumn($column_id);
  71.         $this->datagrid->addColumn($column_nome);
  72.         $this->datagrid->addColumn($column_telefone1);
  73.         $this->datagrid->addColumn($column_aniversario);
  74.         $this->datagrid->addColumn($column_endereco);
  75.         // creates the datagrid column actions
  76.         $order_id = new TAction(array($this'onReload'));
  77.         $order_id->setParameter('order''id');
  78.         $column_id->setAction($order_id);
  79.         
  80.         $order_name = new TAction(array($this'onReload'));
  81.         $order_name->setParameter('order''nome');
  82.         $column_nome->setAction($order_name);
  83.         
  84.         // create EDIT action
  85.         $action_edit = new TDataGridAction(array('ClientesViewForm''onEdit'));
  86.         $action_edit->setButtonClass('btn btn-default');
  87.         $action_edit->setLabel('Editar');
  88.         $action_edit->setImage('fa:pencil-square-o blue fa-lg');
  89.         $action_edit->setField('id');
  90.         $this->datagrid->addAction($action_edit);
  91.         
  92.         // create DELETE action
  93.         $action_del = new TDataGridAction(array($this'onDelete'));
  94.         $action_del->setButtonClass('btn btn-default');
  95.         $action_del->setLabel('Exclui');
  96.         $action_del->setImage('fa:trash-o red fa-lg');
  97.         $action_del->setField('id');
  98.         $this->datagrid->addAction($action_del);
  99.         
  100.         // create the datagrid model
  101.         $this->datagrid->createModel();
  102.         
  103.         // create the page navigation
  104.         $this->pageNavigation = new TPageNavigation;
  105.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  106.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  107.         
  108.         // vertical box container
  109.         $container = new TVBox;
  110.         $container->style 'width: 90%';
  111.         $container->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  112.         $container->add($this->form);
  113.         $container->add(TPanelGroup::pack(''$this->datagrid));
  114.         $container->add($this->pageNavigation);
  115.         
  116.         parent::add($container);
  117.     }
  118.     
  119.     public function onClear($param)
  120.     {
  121.         $this->form->clear();
  122.         
  123.     }
  124. }
  125. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (3)


LC

Os filtros ficam na sessão:
// keep the form filled during navigation with session data
$this->form->setData( TSession::getValue('Clientes_filter_data') );

Se quiser tem que limpar esta sessão, acho q é assim:
TSession::setValue('Clientes_filter_data', null);
EN

LEandro, valeu a tentativa, nao sei...:-(
NR

Direcione o link do seu menu para a função onClear, por exemplo, e dentro dela adicione uma chamada a função onSearch. Assim, sempre que você acessar a classe pelo menu, os dados de busca serão atualizados:
  1. <?php
  2. function onClear()
  3. {
  4.      $this->onSearch();
  5. }
  6. ?>