Lançado Adianti Framework 7.6!
Clique aqui para saber mais
function onReload () Como fazer filtros ? Boa tarde, gostaria de saber como faço para fazer filtros para apresentar no datagrid. Como exemplo dos filtros select * from "PROJETO" where now() between "data_inicio" and "data_final"; select * from "PROJETO" where "data_inicio" between now() and "data_final"; select * from "PROJETO" where "data_inicio" > now(); ...
MS
function onReload () Como fazer filtros ?  
Boa tarde, gostaria de saber como faço para fazer filtros para apresentar no datagrid.

Como exemplo dos filtros

select * from "PROJETO" where now() between "data_inicio" and "data_final";

select * from "PROJETO" where "data_inicio" between now() and "data_final";

select * from "PROJETO" where "data_inicio" > now();


  1. <?php
  2. class Projeto extends TPage
  3. {
  4.     private $datagrid;
  5.     
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.              
  10.         // creates one datagrid
  11.         $this->datagrid = new BootstrapDatagridWrapper(new TQuickGrid);
  12.         //$this->datagrid->style = 'min-width: 1600px';              
  13.         $this->datagrid->width "100%";
  14.         
  15.         $this->datagrid->setHeight(300);
  16.         $this->datagrid->makeScrollable();
  17.        
  18.         $col_cliente    = new TDataGridColumn('projeto''Projeto''center''10%');
  19.         $col_descricao = new TDataGridColumn'descricao''Descricao''left','10%');
  20.         $col_data_inicial = new TDataGridColumn'data_inicial''Data Inicial''left','10%');
  21.         $col_data_final = new TDataGridColumn('data_final''Data Final''left','10%');
  22.                
  23.         // add the columns
  24.         $this->datagrid->addColumn($col_cliente);
  25.         $this->datagrid->addColumn($col_descricao);
  26.         $this->datagrid->addColumn($col_data_inicial);
  27.         $this->datagrid->addColumn($col_data_final);
  28.         
  29.         $col_cliente->setAction( new TAction([$this'onReload']),   ['order' => 'cliente']);
  30.         $col_do_im->setAction( new TAction([$this'onReload']), ['order' => 'descricao']);
  31.                         
  32.         // creates the datagrid model
  33.         $this->datagrid->createModel();            
  34.               
  35.         $this->pageNavigation = new TPageNavigation;
  36.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));  
  37.         $this->pageNavigation->setWidth($this->datagrid->getWidth());         
  38.       
  39.                 
  40.         // wrap the page content using vertical box
  41.         $vbox = new TVBox;
  42.         $vbox->style 'width: 100%';
  43.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  44.         //$vbox->add($panel);
  45.        // $vbox->add($this->form);
  46.         $vbox->add(TPanelGroup::pack(''$this->datagrid$this->pageNavigation)); // add a row for page navigation
  47.         
  48.         TTransaction::close(); // close transaction
  49.         parent::add($vbox);
  50.     }
  51.     
  52.     /**
  53.      * Load the data into the datagrid
  54.      */
  55.     public function onReload($param NULL)
  56.     {
  57.     try
  58.         {
  59.             TTransaction::open('sample');
  60.             
  61.             $repository = new TRepository('SystemChange');
  62.             $limit 10;
  63.             
  64.             $criteria = new TCriteria;
  65.                                     
  66.             if (empty($param['order']))
  67.             {
  68.                 $param['order'] = 'id';
  69.                 $param['direction'] = 'asc';
  70.             }
  71.             
  72.             $criteria->setProperties($param); // order, offset
  73.             $criteria->setProperty('limit'$limit);
  74.                                     
  75.             $objects $repository->load$criteria );
  76.                       
  77.             $this->datagrid->clear();
  78.             
  79.             if ($objects)
  80.             {
  81.                 foreach($objects as $object)
  82.                 {
  83.                     $this->datagrid->addItem($object);
  84.                 }
  85.             }
  86.             
  87.             $criteria->resetProperties();
  88.             $count $repository->count($criteria);
  89.             
  90.             $this->pageNavigation->setCount($count); // count of records
  91.             $this->pageNavigation->setProperties($param); // order, page
  92.             $this->pageNavigation->setLimit($limit); // limit
  93.                         
  94.             TTransaction::close();
  95.             $this->loaded true;
  96.         }
  97.         catch (Exception $e)
  98.         {
  99.             new TMessage('error'$e->getMessage());
  100.             TTransaction::rollback(); // undo all pending operations    
  101.         }
  102.         
  103.         $this->loaded TRUE;
  104.     }   
  105.     
  106.     function show()
  107.     {
  108.         $this->onReload();
  109.         parent::show();
  110.     }
  111. }
  112. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (6)


NR

adianti.com.br/framework_files/tutor/index.php?class=CriteriaView
MS

Consegui usar a TCriteria porém quando quero fazer um filtro pegando dados da tabela do MYSQL a consulta passa o SELECT errado para o banco:

<PHP?
$criteria->add(new TFilter( 'now()','BETWEEN', data_inicial , data_final));
echo $criteria->dump();

o dump retorna: (now() BETWEEN 'data_inicial' AND 'data_final') com aspas simples no 'data_inicial' e 'data_final';

O correto da seria a expressão: (now() BETWEEN data_inicial AND data_final )

Sem aspas.

?>

Como faço para resolver ?

Obrigado desde já.
MS

Consegui usar a TCriteria porém quando quero fazer um filtro pegando dados da tabela do MYSQL a consulta passa o SELECT errado para o banco:

<?PHP
$criteria->add(new TFilter( 'now()','BETWEEN', data_inicial , data_final));
echo $criteria->dump();

o dump retorna: (now() BETWEEN 'data_inicial' AND 'data_final') com aspas simples no 'data_inicial' e 'data_final';

O correto da seria a expressão: (now() BETWEEN data_inicial AND data_final )

Sem aspas.

?>

Como faço para resolver ?

Obrigado desde já.
NR

Você precisa usar o prefixo "NOESC:" antes desses valores:
  1. <?php
  2. $criteria->add(new TFilter'now()','BETWEEN''NOESC:data_inicial' 'NOESC:data_final')); 
  3. ?>
MS

Bom dia, Nataniel.

Deu certinho, era isso mesmo que precisava.

Grato.
MS

Bom dia, Nataniel.

Deu certinho, era isso mesmo que precisava.

Grato.