LIMITAR DATAGRID Bom dia, estou executando um select manual e necessito limitar a exibição de dados na datagrid mas não sei como proceder pois só encontrei exemplos usando criteria....
IV
LIMITAR DATAGRID  
Bom dia, estou executando um select manual e necessito limitar a exibição de dados na datagrid mas não sei como proceder pois só encontrei exemplos usando criteria.

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


NM

Oi

Pode criar o datagrid na mao e limitar ele para a quantidade de linhas que quiser, aqui no meu caso queria que mostrasse mais de 10 linhas ai fiz a datagrid manual.

$this->datagrid = new TQuickGrid();
$this->datagrid->style = 'width: 100%';
$column_nf_id = new TDataGridColumn('nf_id', 'Id', 'center', '5%');
...
$this->datagrid->addColumn($column_nf_id);
...
$this->datagrid->createModel();

e o onReload tambem manual.

Com isso consegui resolver o meu problema.
IV

Desculpe, mas não consegui identificar a parte que você limita a quantidade de linhas
NM

Oi
No onReload você vai popular a grid de maneira manual, ali pode colocar um contador para limitar a quantidade de registros que você quiser.

IV

Desta forma eu limito o retorno do select em 12 resultados, eu necessito de limitar a datagrid e em caso de de haver mais de 12 eu crio um TNavigation dentro da datagrid
IV

Estou me baseando neste exemplo, mas não estou conseguindo adapta-lo para o meu caso
https://www.adianti.com.br/framework_files/tutor/index.php?class=CustomerDataGri
NM

Oi

Veja o onReload()

 
  1. <?php
  2. public function onReload( $param )
  3. {
  4. try
  5. {
  6. TTransaction::open( self::$db );
  7. $this->datagrid->clear();
  8. $notas = ViewNotasLoc::where('n_nfs_nro', 'is', null)->load();
  9. foreach ($notas as $lin)
  10. {
  11. $data = new stdClass;
  12. $data->n_id = $lin->n_id;
  13. $data->c_rps_data = $lin->c_rps_data;
  14. $data->total_nota = number_format($lin->total_nota, 2, ',', '.');
  15. $data->c_nm_reduzi = $lin->c_nm_reduzi;
  16. $data->c_docume = FuncoesFormatacao::FormataDocumento( $lin->c_docume );
  17. $this->datagrid->addItem( $data );
  18. }
  19. //TSession::setValue(__CLASS__.'_selected_objects', $notas);
  20. TTransaction::close();
  21. }
  22. catch (Exception $e)
  23. {
  24. new TMessage('error', $e->getMessage());
  25. }
  26. }
  27. ?>


nesse caso não estou tratando a quantidade de linhas na grid porque sei que vai ser no maximo 10 ou 15 mas da para colocar um contador dentro do foreach e controlar quantas vou adicionar na grid.
IV

Intendi oque você quis dizer, mas não é disso que eu preciso. Como eu disse dessa forma você está limitando o retorno do select em 12 linhas.
Eu preciso apresentar todos os retornos, porém quero reduzir a datagrid para 12 linhas, e se passar disso pagina-la.
IV

 
  1. <?php
  2. public function __construct($param)
  3. {
  4. parent::__construct();
  5. $this->form = new BootstrapFormBuilder('form_builder');
  6. // $this->form->setFormTitle(_t('Bootstrap vertical form'));
  7. $this->form->setFieldSizes('100%');
  8. $this->form->generateAria(); // automatic aria-label
  9. $data_inicial = new TDate('Data Inicial');
  10. $data_final = new TDate('Data Final');
  11. $pesquisar = new TButton('Pesquisar');
  12. $data_inicial->setMask('dd/mm/yyyy');
  13. $data_final->setMask('dd/mm/yyyy');
  14. //$data_inicial->setDatabaseMask('yyyy-mm-dd');
  15. $pesquisar->setLabel('Pesquisar');
  16. $pesquisar->style = 'font-weight:bold;font-size:14px;background-color:#2196F3;padding: 10px 15px; border: none;';
  17. $pesquisar->setImage('fa:search');
  18. $action_button = new TAction(array('ConsultaPedido', 'onReload'));
  19. $action_button->setParameters(['data_inicial', $data_inicial, 'data_final', $data_final]);
  20. $pesquisar->setAction($action_button, 'onReload');
  21. $row = $this->form->addFields( [ new TLabel('Data Inicial'), $data_inicial],
  22. [ new TLabel('Data Final'), $data_final],
  23. [ new TLabel(''), $pesquisar],
  24. );
  25. $row->layout = ['col-sm-3', 'col-sm-3', 'col-sm-2'];
  26. // $row->layout = ['col-sm-2', 'col-sm-3', 'col-sm-3', 'col-sm-2', 'col-sm-2' ];
  27. $this->tabela_pedido = new BootstrapDatagridWrapper(new TDataGrid);
  28. $this->tabela_pedido->width = '100%';
  29. //$this->tabela_concursos->style = 'color:white;';
  30. $this->tabela_pedido->addColumn(new TDataGridColumn('data', 'Data', 'left'));
  31. $this->tabela_pedido->addColumn(new TDataGridColumn('repres', 'Repres', 'left'));
  32. $this->tabela_pedido->addColumn(new TDataGridColumn('pedido', 'Pedido', 'left'));
  33. $this->tabela_pedido->addColumn(new TDataGridColumn('rz_social', 'Razão Social', 'left'));
  34. $this->tabela_pedido->addColumn(new TDataGridColumn('vlr_pedido', 'Valor Pedido', 'right'));
  35. $this->tabela_pedido->addColumn(new TDataGridColumn('situacao', 'Situação', 'left'));
  36. $this->tabela_pedido->addColumn(new TDataGridColumn('loc_digit', 'Loc Digit', 'left'));
  37. $this->tabela_pedido->addColumn(new TDataGridColumn('acao', 'Ação', 'center'));
  38. $this->tabela_pedido->createModel();
  39. //$this->form->addContent( [$this->tabela_pedido] );
  40. $this->pageNavigation = new TPageNavigation;
  41. $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
  42. $this->pageNavigation->setWidth($this->tabela_pedido->getWidth());
  43. // wrap the page content using vertical box
  44. $vbox = new TVBox;
  45. $vbox->style = 'width: 100%';
  46. $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  47. $vbox->add($this->form);
  48. $vbox->add(TPanelGroup::pack('', $this->tabela_pedido, $this->pageNavigation));
  49. parent::add($vbox);
  50. }
  51. ?>
IV

Se alguem puder ajudar
NR

Sugestão, crie uma view no banco com essa consulta manual, crie um model para ela e aí crie a grid normalmente. Acho que é o caminho mais simples