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. $repository = new TRepository('SicOpe');
  4. $criteria = new TCriteria;
  5. $login_id = TSession::getValue('login_id');
  6. $logged = TSession::getValue('logged');
  7. $login_nome = TSession::getValue('login_nome');
  8. $login_id_adm = TSession::getValue('login_id_adm');
  9. $criteria->add(new TFilter('id_lgn', '=', $login_id));
  10. $criteria->add(new TFilter('id_adm', '=', $login_id_adm));
  11. $objects = $repository->load( $criteria );
  12. $this->datagrid->clear();
  13. if ($objects)
  14. {
  15. foreach ($objects as $object)
  16. {
  17. $this->datagrid->addItem( $object );
  18. //print $object->sic_emp->des;
  19. }
  20. }
  21. ?>



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 (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->onReload( func_get_arg(0) );
  7. }
  8. parent::show();
  9. }
  10. ?>