Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Dúvida sobre foreach em onReload Srs , por que o comando foreach em minhas rotinas mostram sempre itens em dobro? No código mais abaixo a linha : $this->datagrid->addItem( $object ); acrescenta corretamente o registro na grid Mas se eu trocar por : print $object->sic_emp->des; Ele printa o dobro de respostas, pois o array está em dobro O que acontece? ...
SF
Dúvida sobre foreach em onReload  
Fechado
Srs , por que o comando foreach em minhas rotinas mostram sempre itens em dobro?

No código mais abaixo a linha :

$this->datagrid->addItem( $object );

acrescenta corretamente o registro na grid

Mas se eu trocar por :

print $object->sic_emp->des;

Ele printa o dobro de respostas, pois o array está em dobro

O que acontece?

  1. <?php
  2.  TTransaction::open('sic');
  3.             
  4.             $repository = new TRepository('SicOpe');
  5.             
  6.             $criteria = new TCriteria;
  7.             
  8.             $login_id     TSession::getValue('login_id');
  9.             $logged       TSession::getValue('logged');
  10.             $login_nome   TSession::getValue('login_nome');
  11.             $login_id_adm TSession::getValue('login_id_adm');
  12.           
  13.             $criteria->add(new TFilter('id_lgn''='$login_id));             
  14.             $criteria->add(new TFilter('id_adm''='$login_id_adm));
  15.             
  16.                        $objects $repository->load$criteria );
  17.             $this->datagrid->clear();
  18.             if ($objects)
  19.             {
  20.                 foreach ($objects as $object)
  21.                 {
  22.                     $this->datagrid->addItem$object );
  23.                     
  24.                     //print $object->sic_emp->des;
  25.                    
  26.                     
  27.                 }
  28.             }
  29. ?>



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


FC

use o var_dump($object); antes do foreach (laço) para conferir seu array.
SF

Usei, ele mostra o mesmo array duas vezes. Por que ?
PD

Dentro do onReload() ?
RC

Primeiro e para ficar mais claro, você deve usar os operadores do TCriteria:
TExpression::OR_OPERATOR
TExpression::AND_OPERATOR

Verifique também se os dados não estão duplicado no banco de dados.
SF

Não estão duplicados, e usando o add para adicionar o registro a grid funciona blz, mas se eu for ler sando o "print" ele imprime das vezes.

PD

Veja se o show(), tem esse controle:

  1. <?php
  2.     function show()
  3.     {
  4.         if (!$this->loaded// check if the datagrid is already loaded
  5.         {
  6.             $this->onReloadfunc_get_arg(0) );
  7.         }
  8.         parent::show();
  9.     }
  10. ?>