Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Criar Datagrid Manual Boa noite, estou com um problema no qual preciso mostrar o dados no datagrid somente quando for escolhido os filtros pois a tabela tem muitos registros, sendo assim, mostrar os dados no datagrid quando entra na página irá travar tudo. Fiz o exemplo do livro porém não consigo mostrar o datagrid e sua paginação. ...
HM
Criar Datagrid Manual  
Boa noite, estou com um problema no qual preciso mostrar o dados no datagrid somente quando for escolhido os filtros pois a tabela tem muitos registros, sendo assim, mostrar os dados no datagrid quando entra na página irá travar tudo.

Fiz o exemplo do livro porém não consigo mostrar o datagrid e sua paginação.


  1. <?php
  2. use Adianti\Control\TPage;
  3. use Adianti\Database\TCriteria;
  4. use Adianti\Database\TFilter;
  5. use Adianti\Database\TRepository;
  6. use Adianti\Database\TTransaction;
  7. use Adianti\Registry\TSession;
  8. use Adianti\Widget\Datagrid\TDataGridColumn;
  9. use Adianti\Widget\Dialog\TMessage;
  10. use Adianti\Widget\Form\TLabel;
  11. use Adianti\Widget\Wrapper\TDBUniqueSearch;
  12. class DistribuicaoRegionalList extends TPage
  13. {
  14.     private $form;
  15.     protected $datagrid;
  16.     use Adianti\base\AdiantiStandardListTrait;
  17.     public function __construct()
  18.     {
  19.         parent::__construct();
  20.         //$this->setDatabase('sorteioapp');
  21.         //$this->setActiveRecord('DistribuicaoRegional');
  22.         $this->setLimit(10);
  23.         $this->addFilterField('concurso_id''=''concurso_id');
  24.         $this->addFilterField('regiona_id''=''regional_id');
  25.         $this->form = new BootstrapFormBuilder('form_search_estado_bilhete_distribuido');
  26.         $this->form->setFormTitle('Distribuição Regional (Lotes Entregues)');
  27.         $concurso       = new TDBUniqueSearch('concurso_id''sorteioapp''Concursos''concurso_id''concurso_id');
  28.         $regional       = new TDBUniqueSearch('regional_id''sorteioapp''RegionalModel''regional_id''nome');
  29.     
  30.         $concurso->setSize('100%');
  31.         $concurso->setMinLength(0);
  32.         $regional->setSize('100%');
  33.         $regional->setMinLength(0);
  34.        
  35.         
  36.         $this->form->addFields( [new TLabel('Concurso')], [$concurso],
  37.                                 [new TLabel('Regional')], [$regional] );
  38.         $concurso->setValue(TSession::getValue('Valor_concurso'));
  39.         $this->form->setDataTSession::getValue(__CLASS__.'_filter_data') );
  40.         $btn $this->form->addAction(_t('Find'), new TAction([$this'onSearch']), 'fa:search');
  41.         $btn->class 'btn btn-sm btn-primary';
  42.         
  43.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  44.         $this->datagrid->style 'width: 100%';
  45.         $column_concurso            = new TDataGridColumn('concurso_id''Concurso''left');    
  46.         $column_numini              = new TDataGridColumn('numinicio''''left');
  47.         $column_numfim              = new TDataGridColumn('numfim''''left');
  48.         $column_identificacao_ini   = new TDataGridColumn('identificacaoinicial''Número Inicial''left');
  49.         $column_identificacao_fim   = new TDataGridColumn('identificacaofinal''Número Final''left');
  50.         $column_quantidade          = new TDataGridColumn('= ({numfim} - {numinicio}) + 1''Quantidade''left');
  51.         $column_regional            = new TDataGridColumn('regional_nome''Regional''left');
  52.         $column_regi_id             = new TDataGridColumn('regional_id','''left');
  53.         $this->datagrid->addColumn($column_concurso);
  54.         $this->datagrid->addColumn($column_identificacao_ini);
  55.         $this->datagrid->addColumn($column_identificacao_fim);
  56.         $this->datagrid->addColumn($column_quantidade);
  57.         $this->datagrid->addColumn($column_regional);
  58.         $this->datagrid->createModel();
  59.         
  60.         $this->pageNavigation = new TPageNavigation;
  61.         $this->pageNavigation->setAction(new TAction([$this'onReload']));
  62.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  63.         $panel = new TPanelGroup('''white');
  64.         $panel->add($this->datagrid);
  65.         $panel->addFooter($this->pageNavigation);
  66.         $container = new TVBox;
  67.         $container->style 'width: 100%';
  68.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  69.         $container->add($this->form);
  70.         $container->add($panel);
  71.         parent::add($this->form);        
  72.     
  73.     }
  74.     public function onSearch()
  75.     {
  76.         $data $this->form->getData();
  77.         if(isset($data->concurso_id)){
  78.             $filter_concurso = new TFilter('concurso_id''='$data->concurso_id);
  79.             $filter_regional = new TFilter('regional_id''='$data->regional_id);
  80.             TSession::setValue('Concurso_filter'$filter_concurso);
  81.             TSession::setValue('Valor_concurso'$data->concurso_id);
  82.             TSession::setValue('Regional_filter'$filter_regional);
  83.             TSession::setValue('Valor_regional'$data->regional_id);
  84.             $this->form->setData($data);
  85.             $param = array();
  86.             $param['offset'] = 0;
  87.             $param['first_page'] = 1;
  88.             $this->onReload($param);
  89.         }
  90.     }
  91.     public function onReload($param NULL)
  92.     {
  93.         
  94.         try
  95.         {
  96.             TTransaction::open('permission');
  97.                 
  98.             if(TSession::getValue('Concurso_filter')){
  99.                 $repository = new TRepository('DistribuicaoRegional');
  100.             
  101.             
  102.                 $limit 10;
  103.                 $criteria   = new TCriteria;
  104.                 if(empty($param['order'])){
  105.                     $param['order'] = 'regional_nome';
  106.                     $param['direction'] = 'asc';
  107.                 }
  108.                 $criteria->setProperties($param); // order, offset
  109.                 $criteria->setProperty('limit'$limit);
  110.                     
  111.                 if(TSession::getValue('Concurso_filter')){
  112.                     $criteria->add(TSession::getValue('Concurso_filter'));
  113.                 }
  114.                 if(TSession::getValue('Regional_filter')){
  115.                     $criteria->add(TSession::getValue('Regional_filter'));
  116.                     $criteria->add(new TFilter('regional_nome''IS NOT'NULL));
  117.                 }
  118.                 $objects $repository->load($criteria);
  119.                 $this->datagrid->clear();
  120.                 if($objects){
  121.                     foreach($objects as $object){
  122.                         $this->datagrid->addItem($object);
  123.                     }
  124.                 }
  125.                 $criteria->resetProperties();
  126.                 $count $repository->count($criteria);
  127.                 $this->pageNavigation->setCount($count);
  128.                 $this->pageNavigation->setProperties($param);
  129.                 $this->pageNavigation->setLimit($limit);
  130.             }
  131.             TTransaction::close();
  132.             $this->loaded true;
  133.         }
  134.         catch(Exception $e)
  135.         {  
  136.             new TMessage('error'$e->getMessage());
  137.             TTransaction::rollback();
  138.         }
  139.         
  140.         $this->loaded true;
  141.     }
  142.     function show()
  143.     {
  144.         if (!$this->loaded) {
  145.         $this->onReloadfunc_get_arg(0) );
  146.         }
  147.         parent::show();
  148.     }
  149. }
  150. </code>

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


NR

Faltou adicionar a grid à página.
  1. <?php
  2. // troque
  3. parent::add($this->form);
  4. // por
  5. parent::add($container);
  6. ?>
HM

Obrigado mais uma vez! esqueci desse detalhe rsrs