Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Duas datagrids com PageNavigation Olá pessoal boa tarde, estou com alguns problemas com o pagenavegation, estou criando em uma classe com dois datagrids, porém quando usa o pagenavegation ele modifica os dois. Ex: Se clica na opção 2 todos os dois trocam para página 2. Segue meu código e serei grato pela ajuda. ...
FV
Duas datagrids com PageNavigation  
Fechado
Olá pessoal boa tarde, estou com alguns problemas com o pagenavegation, estou criando em uma classe com dois datagrids, porém quando usa o pagenavegation ele modifica os dois. Ex: Se clica na opção 2 todos os dois trocam para página 2.

Segue meu código e serei grato pela ajuda.


  1. <?php
  2. class EmpresasList extends TPage
  3. {
  4.     private $form;     
  5.     private $datagridEmpresas;
  6.     private $datagridTablets
  7.     private $pageNavigationEmpresas;
  8.     private $pageNavigationTablets;
  9.     private $loaded;
  10.     
  11.     public function __construct()
  12.     {
  13.         parent::__construct();
  14.         new TSession;
  15.         
  16.         $this->form = new TQuickForm('form_listar_empresas');
  17.         $this->form->class 'tform'
  18.         $this->form->style 'width: 100%';
  19.         $this->form->setFormTitle('Listagem de Empresas');
  20.         $codigoEmpresa   = new TEntry('id_empresa');
  21.         $razaoSocial     = new TEntry('razao_social');
  22.         $cnpj            = new TEntry('cnpj');  
  23.         $endereco        = new TEntry('endereco');        
  24.         $bairro          = new TEntry('bairro');
  25.         $cidade          = new TEntry('cidade');
  26.         $uf              = new TEntry('estado');
  27.         $telefone        = new TEntry('telefone');
  28.         $opcao = new TCombo('opcao');
  29.         $busca = new TEntry('razao_social');        
  30.         
  31.         $items = array();
  32.         $items['razao_social']  = 'Razão Social';
  33.         $items['id_empresa']    = 'Cód. Empresa';
  34.         $items['cnpj']          = 'CNPJ';
  35.         $opcao->addItems($items);
  36.         $opcao->setValue('razao_social');
  37.         $opcao->setSize(120);
  38.         $busca->setSize(300);
  39.         
  40.         $btnBuscar =   new TButton('btn_buscar');
  41.         $btnBuscar->setAction(new TAction(array($this'onSearch')), 'Buscar');
  42.         $btnBuscar->setImage('ico_find.png');
  43.         $this->form->addQuickFields(null, array($opcao$busca$btnBuscar));
  44.         $this->form->addQuickAction('Novo', new TAction(array('EmpresasForm''onEdit')), 'ico_new.png');
  45.         
  46.         $this->datagridEmpresa = new TQuickGrid;
  47.         $this->datagridEmpresa->style 'width: 100%';
  48.         
  49.         $codigoEmpresa  = new TDataGridColumn('id_empresa''Código''left'60);
  50.         $razaoSocial    = new TDataGridColumn('razao_social''Razão Social''left'250);
  51.         $cnpj           = new TDataGridColumn('cnpj''CNPJ''left'120);
  52.         $endereco       = new TDataGridColumn('endereco''Endereço''left'150);
  53.         $bairro         = new TDataGridColumn('bairro''Bairro''left'70);
  54.         $cidade         = new TDataGridColumn('cidade''Cidade''left'70);
  55.         $uf             = new TDataGridColumn('estado''UF''left'70);
  56.         $telefone       = new TDataGridColumn('telefone''Telefone''left'120);
  57.         
  58.         $order1 = new TAction(array($this'onReload'));
  59.         $order2 = new TAction(array($this'onReload'));
  60.         $order3 = new TAction(array($this'onReload'));
  61.         $order4 = new TAction(array($this'onReload'));
  62.         $order5 = new TAction(array($this'onReload'));
  63.         $order6 = new TAction(array($this'onReload'));
  64.         $order7 = new TAction(array($this'onReload'));
  65.         $order8 = new TAction(array($this'onReload'));
  66.        
  67.         $order1->setParameter('order''id_empresa');
  68.         $order2->setParameter('order''razao_social');
  69.         $order3->setParameter('order''cnpj');
  70.         $order4->setParameter('order''endereco');        
  71.         $order5->setParameter('order''bairro');
  72.         $order6->setParameter('order''cidade');
  73.         $order7->setParameter('order''estado');
  74.         $order8->setParameter('order''telefone');
  75.         $codigoEmpresa->setAction($order1);
  76.         $razaoSocial->setAction($order2);
  77.         $cnpj->setAction($order3);
  78.         $endereco->setAction($order4);
  79.         $bairro->setAction($order5);
  80.         $cidade->setAction($order6);
  81.         $uf->setAction($order7);
  82.         $telefone->setAction($order8);
  83.         $this->datagridEmpresa->addColumn($codigoEmpresa);
  84.         $this->datagridEmpresa->addColumn($razaoSocial);
  85.         $this->datagridEmpresa->addColumn($cnpj);
  86.         $this->datagridEmpresa->addColumn($endereco);
  87.         $this->datagridEmpresa->addColumn($bairro);
  88.         $this->datagridEmpresa->addColumn($cidade);
  89.         $this->datagridEmpresa->addColumn($uf);
  90.         $this->datagridEmpresa->addColumn($telefone);
  91.         $action1 = new TDataGridAction(array('EmpresasForm''onEdit'));
  92.         $action1->setLabel('Editar');
  93.         $action1->setImage('ico_edit.png');
  94.         $action1->setField('id_empresa');
  95.         
  96.         $action2 = new TDataGridAction(array($this'onDelete'));
  97.         $action2->setLabel('Excluir');
  98.         $action2->setImage('ico_delete.png');
  99.         $action2->setField('id_empresa');
  100.         $this->datagridEmpresa->addAction($action1);
  101.         $this->datagridEmpresa->addAction($action2);
  102.                 
  103.         $this->datagridEmpresa->disableDefaultClick();
  104.         $this->datagridEmpresa->createModel();
  105.         $this->pageNavigationEmpresas = new TPageNavigation;
  106.         $this->pageNavigationEmpresas->setAction(new TAction(array($this'onReload')));
  107.         $this->pageNavigationEmpresas->setWidth($this->datagridEmpresa->getWidth());
  108.         $this->pageNavigationEmpresas = new TPageNavigation;
  109.         $this->pageNavigationEmpresas->setAction(new TAction(array($this'onReload')));
  110.         $this->pageNavigationEmpresas->setWidth($this->datagridEmpresa->getWidth());
  111.         $this->datagridTablets = new TQuickGrid;
  112.         $this->datagridTablets->style 'width: 100%';
  113.         $codigo             = new TDataGridColumn('id''Código''left'60);
  114.         $tablet             = new TDataGridColumn('tablet_id''Tablet''left'250);
  115.         $vendedor           = new TDataGridColumn('nome_vendedor''Vendedor''left'120);
  116.         $autorizado         = new TDataGridColumn('autorizado''Autorizado''left'150);
  117.         $supervisor         = new TDataGridColumn('supervisor''Supervisor''left'70);
  118.         
  119.         $order1 = new TAction(array($this'onReload'));
  120.         $order2 = new TAction(array($this'onReload'));
  121.         $order3 = new TAction(array($this'onReload'));
  122.         $order4 = new TAction(array($this'onReload'));
  123.         $order5 = new TAction(array($this'onReload'));
  124.        
  125.         $order1->setParameter('order''id');
  126.         $order2->setParameter('order''tablet_id');
  127.         $order3->setParameter('order''nome_vendedor');
  128.         $order4->setParameter('order''autorizado');        
  129.         $order5->setParameter('order''supervisor');
  130.         $codigo->setAction($order1);
  131.         $tablet->setAction($order2);
  132.         $vendedor->setAction($order3);
  133.         $autorizado->setAction($order4);
  134.         $supervisor->setAction($order5);
  135.         $this->datagridTablets->addColumn($codigo);
  136.         $this->datagridTablets->addColumn($tablet);
  137.         $this->datagridTablets->addColumn($vendedor);
  138.         $this->datagridTablets->addColumn($autorizado);
  139.         $this->datagridTablets->addColumn($supervisor);
  140.         
  141.         $this->datagridTablets->disableDefaultClick();
  142.         $this->datagridTablets->createModel();
  143.         $this->pageNavigationTablets = new TPageNavigation;
  144.         $this->pageNavigationTablets->setAction(new TAction(array($this'onReload')));
  145.         $this->pageNavigationTablets->setWidth($this->datagridTablets->getWidth());
  146.         $this->pageNavigationTablets = new TPageNavigation;
  147.         $this->pageNavigationTablets->setAction(new TAction(array($this'onReload')));
  148.         $this->pageNavigationTablets->setWidth($this->datagridTablets->getWidth());
  149.         $table = new TTable;
  150.         $table->addRow()->addCell($this->form);
  151.         $table->addRow()->addCell($this->datagridEmpresa);
  152.         $table->addRow()->addCell($this->pageNavigationEmpresas);
  153.         $table->addRow()->addCell($this->datagridTablets);
  154.         $table->addRow()->addCell($this->pageNavigationTablets);
  155.         parent::add($table);
  156.     }
  157.     
  158.     function onSearch() 
  159.     {
  160.         $data $this->form->getData();
  161.         if (isset($data->opcao) AND ($data->opcao)){
  162.             
  163.             $campo $data->opcao;
  164.             $dados $data->razao_social;
  165.             if (is_numeric($dados)) {
  166.                 $filter = new TFilter($campo'='$dados);
  167.             } 
  168.             else {
  169.                 $filter = new TFilter($campo'like''%'.$dados.'%');
  170.             } 
  171.              
  172.             TSession::setValue('filtro_empresa'$filter);
  173.         } 
  174.         $this->form->setData($data);
  175.         $param=array();
  176.         $param['offset']        = 0;
  177.         $param['first_page']    = 1
  178.         $this->onReload($param);
  179.     }
  180.     function onReload($param NULL)
  181.     {
  182.         try
  183.         {
  184.             TTransaction::open('db_monitor');
  185.             
  186.             $repositoryEmpresas = new TRepository('EmpresasRecord');
  187.             $repositoryTablets  = new TRepository('TabletsRecord');
  188.             $criteriaEmpresas = new TCriteria;
  189.             $criteriaTablets  = new TCriteria;
  190.             if (empty($param['order']))
  191.             {
  192.                 $param['order'] = 'id_empresa';
  193.                 $param['direction'] = 'asc';
  194.             }
  195.             if (TSession::getValue('filtro_empresa')){
  196.                 $criteriaEmpresas->add(TSession::getValue('filtro_empresa'));
  197.             }
  198.             $limitEmpresas 8;
  199.             $criteriaEmpresas->setProperties($param); 
  200.             $criteriaEmpresas->setProperty('limit'$limitEmpresas);
  201.             $objects $repositoryEmpresas->load($criteriaEmpresas);
  202.             
  203.             $this->datagridEmpresa->clear();
  204.             if ($objects)
  205.             {
  206.                 foreach ($objects as $object)
  207.                 {
  208.                     $this->datagridEmpresa->addItem($object);
  209.                 }
  210.             }
  211.             $limitTablets 8;
  212.             $criteriaTablets->setProperties($param); 
  213.             $criteriaTablets->setProperty('limit'$limitTablets);
  214.             $objects $repositoryTablets->load($criteriaTablets);
  215.             
  216.             $this->datagridTablets->clear();
  217.             if ($objects)
  218.             {
  219.                 foreach ($objects as $object)
  220.                 {
  221.                     $this->datagridTablets->addItem($object);
  222.                 }
  223.             }
  224.             $criteriaEmpresas->resetProperties();
  225.             $countEmpresas $repositoryEmpresas->count($criteriaEmpresas);
  226.             $this->pageNavigationEmpresas->setCount($countEmpresas); 
  227.             $this->pageNavigationEmpresas->setProperties($param); 
  228.             $this->pageNavigationEmpresas->setLimit($limitEmpresas); 
  229.             $criteriaTablets->resetProperties();
  230.             $countTablets $repositoryEmpresas->count($criteriaTablets);
  231.             $this->pageNavigationTablets->setCount($countTablets); 
  232.             $this->pageNavigationTablets->setProperties($param); 
  233.             $this->pageNavigationTablets->setLimit($limitTablets);
  234.             
  235.             TTransaction::close();
  236.             $this->loaded true;
  237.         }
  238.         catch (Exception $e)
  239.         {
  240.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  241.             TTransaction::rollback();
  242.         }
  243.     }
  244.     function onDelete($param)
  245.     {
  246.         
  247.         $action = new TAction(array($this'Delete'));
  248.         $action->setParameters($param);
  249.         
  250.         new TQuestion('Deseja realmente excluir?'$action);
  251.     } 
  252.     
  253.     function Delete($param)
  254.     {
  255.         try
  256.         {
  257.             
  258.             $key=$param['key'];
  259.             
  260.             TTransaction::open('db_monitor'); 
  261.             $object = new EmpresasRecord($key);    
  262.             $object->delete();            
  263.             TTransaction::close();        
  264.             
  265.             
  266.             $this->onReload$param );
  267.             
  268.             new TMessage('info'"Registro Excluido com sucesso!");
  269.         }
  270.         catch (Exception $e
  271.         {
  272.             
  273.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  274.             
  275.             TTransaction::rollback();
  276.         }
  277.     }
  278.     
  279.     function show()
  280.     {
  281.         if (!$this->loaded)
  282.         {
  283.             $this->onReloadfunc_get_arg(0) );
  284.         }
  285.         parent::show();
  286.     }
  287. }
  288. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (4)


LJ

primeiro vc ta repetindo o pagenavegation, veja que a linha 163-165 é igual 166-168 , no outro igual. deixe apenas um de cada.
mas mesmo assim , ainda nao acho que é este erro. mas pode começar por ai.
NC

Fora as linhas duplicadas, que como bem disse o Luiz não é o problema.

Na linha 240 e 258, está passando o mesmo parametros para o Repository, ou seja quando cliar em um vai passar os mesmos parametros de limit e offset para os dois, pois como é passado via get e são os mesmos nomes, ambos serão repaginados.

E realmente não sei se o que deseja fazer é possivel, dois Datagrids com paginação no mesmo Form.
FV

Obrigado pelas dicas, consegui resolver, realmente grande parte do problema estava nas linhas duplicadas.
AD

Felipe Vicente, como você resolveu o problema de duas datagrids com dois PageNavigation?