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

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 (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.