Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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.

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 (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::openself::$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_nota2',''.');
  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.         
  20.             //TSession::setValue(__CLASS__.'_selected_objects', $notas);    
  21.             TTransaction::close();    
  22.         }
  23.         catch (Exception $e)
  24.         {
  25.             new TMessage('error'$e->getMessage());
  26.         }
  27.     }
  28. ?>


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