Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Iterar no TDataGrid Prezados boa tarde, Estou desenvolvendo uma nova funcionalidade no meu sistema, que utiliza um TDataGrid, e preciso iterar neste grid para gravar os dados contidos nele. Pesquisando nos exemplos do Adianti, no livro e no forum não achei um exemplo que mostre como fazer isto. Alguém tentou fazer algo semelhante para mostrar-me?...
CG
Iterar no TDataGrid  
Fechado
Prezados boa tarde,

Estou desenvolvendo uma nova funcionalidade no meu sistema, que utiliza um TDataGrid, e preciso iterar neste grid para gravar os dados contidos nele.

Pesquisando nos exemplos do Adianti, no livro e no forum não achei um exemplo que mostre como fazer isto.

Alguém tentou fazer algo semelhante para mostrar-me?

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)


AS

não entendi explica melhor
CG

Bom dia Alexandre,

Tenho um TDatagrid que possui, por exemplo, 10 registros.

Ele foi carregado utilizando o objeto STDClass, ou seja, os dados contido neste Grid não foram carregados por um Model.

O que eu preciso é recuperar as linhas deste grid para gravá-los no banco banco de dados, porém não sei como fazer isso.
AS

posta o codigo
RR

Carlos, não sei se é a melhor solução, mas você pode criar um array de objetos. Na medida que for preenchendo cada linha do TDataGrid você incrementa esse array com o objeto atual.

Não sei como está montada essa parte da sua aplicação, mas talvez você precise colocar esse array de objetos em sessão (TSession).

Com esse array de objetos populado, você instancia um Active Record, faz um loop nesse array (foreach) e vai dando "store()" linha a linha do array...

Como disse, não sei se é a melhor opção, acho que funcionaria!
PD

Oi Carlos,

Anotei aqui para implementar um getItems() na Datagrid. Acredito que ajudaria neste cenário.

Abraço,
Pablo
CG

Fala Pablo,

Fico feliz por ajudar a melhorar o Adianti.

Enquanto a melhoria não chega, resolvi o meu problema implementando da maneira que o Rafael comentou.

Segue o código para quem precisar.

  1. <?php 
  2. class FaturaReceberForm extends TPage
  3. {
  4.     private $parcelas;
  5.      //CODIGO DA CLASSE
  6.      function calcularParcelas()
  7.     {
  8.         
  9.         try
  10.         {
  11.             // open a transaction with database 'sollus'
  12.             TTransaction::open('sollus');
  13.             $this->parcelas = array();
  14.                     
  15.             $object $this->form->getData('FaturaReceber');
  16.             $this->form->validate();
  17.             
  18.                         
  19.             $valortotal =  Util::converterNumero($object->valor);
  20.             $valor 0;
  21.             $qtdparcelas = (int) $object->qtdparcelas;
  22.             $formapagamento = new FormaPagamento($object->formapagamento_id);
  23.             
  24.             $this->datagrid->clear();
  25.         
  26.             for ($n=1$n<=$qtdparcelas$n++)
  27.             {
  28.                 
  29.                 // add an regular object to the datagrid
  30.                 $item = new StdClass;
  31.                 $item->parcela_id   NULL;
  32.                 $item->numero     $n;
  33.                 $item->databaixa NULL;                 
  34.                 
  35.                 $valorparcela $valortotal $qtdparcelas;
  36.                 
  37.                 $valor += Util::truncarValor($valorparcela);
  38.                 
  39.                 if ($n == $qtdparcelas){
  40.                    $item->valorparcela =  $valorparcela + ($valortotal $valor);
  41.                    
  42.                    $item->valorparcela  Util::truncarValor($item->valorparcela);
  43.                    
  44.                     
  45.                 }else{                   
  46.                     $item->valorparcela  Util::truncarValor($valorparcela);
  47.                                       
  48.                 }
  49.                 
  50.                 $item->valorparcela  Util::converterNumero($item->valorparcela,TRUE,2);
  51.                         
  52.                 $this->datagrid->addItem($item);
  53.                 $this->parcelas[] = $item
  54.                 TSession::setValue('parcelas',$this->parcelas);
  55.             }            
  56.                 
  57.             
  58.             
  59.             $this->notebook->setCurrentPage(1);
  60.             $this->form->setData($object);
  61.             
  62.            
  63.             
  64.             TTransaction::close();
  65.                     
  66.         }
  67.         catch (Exception $e// in case of exception
  68.         {
  69.             // shows the exception error message
  70.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  71.             
  72.             // undo all pending operations
  73.             TTransaction::rollback();
  74.         }                    
  75.         
  76.         
  77.     }
  78.     function onSave()
  79.     {
  80.         try
  81.         {
  82.             TTransaction::open('sollus');
  83.             
  84.             $object $this->form->getData('FaturaReceber');
  85.             $this->form->setData($object);
  86.             $this->form->validate();
  87.               
  88.             $this->parcelas TSession::getValue('parcelas');
  89.             //CÓDIGO DA FUNCTION
  90.              $object->addFaturaParcela($this->parcelas);
  91.              $object->store();
  92.                 
  93.               if ($this->parcelas)
  94.               {
  95.                   foreach ($this->parcelas as $parcela)
  96.                   {
  97.                       
  98.                       $faturaparcela = new StdClass;
  99.                       $faturaparcela->parcela_id $parcela->parcela_id;
  100.                       $faturaparcela->numero $parcela->numero;
  101.                       $faturaparcela->vencimento $parcela->vencimento;
  102.                       
  103.                       $faturaparcela->valorparcela $parcela->valorparcela;
  104.                        
  105.                       $faturaparcela->databaixa $parcela->databaixa;
  106.                       $this->datagrid->addItem($faturaparcela);
  107.                   }
  108.               }
  109.                 
  110.                 TSession::setValue('parcelas',array());
  111.                 
  112.                 new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  113.                 
  114.                 TTransaction::close();
  115.            }
  116.             
  117.         }
  118.         catch (Exception $e// in case of exception
  119.         {
  120.             // shows the exception error message
  121.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  122.             
  123.             // undo all pending operations
  124.             TTransaction::rollback();
  125.         }                    
  126.     }
  127. function onEdit($param)
  128.     {
  129.         try
  130.         {
  131.             if (isset($param['key']))
  132.             {
  133.                 // get the parameter $key
  134.                 $key=$param['key'];
  135.                  
  136.                 // open a transaction with database 'sollus'
  137.                 TTransaction::open('sollus');
  138.                 
  139.                 // instantiates object Aeroporto
  140.                 $object = new FaturaReceber($key);
  141.                 //CODIGO DA FUNCTION
  142.              $faturaparcela $object->get_FaturaParcela();
  143.              $this->parcelas = array();
  144.              
  145.              if ($faturaparcela){
  146.              
  147.                  foreach($faturaparcela as $parcela){
  148.                     $objparcela = new StdClass;
  149.                     $objparcela->parcela_id   $parcela->id;
  150.                     $objparcela->fatura_id $parcela->fatura_id;          
  151.                     $objparcela->numero $parcela->numparcela;
  152.                     $objparcela->vencimento TDateSollaris::date2br($parcela->vencimento);
  153.                     $objparcela->valorparcela Util::converterNumero($parcela->valor,TRUE);
  154.                     $objparcela->databaixa TDateSollaris::date2br($parcela->databaixa);
  155.                     
  156.                     
  157.                     $this->datagrid->addItem($objparcela);
  158.                     $this->parcelas[] = $objparcela;                            
  159.                  }
  160.                  
  161.                   TSession::setValue('parcelas',$this->parcelas);
  162.              
  163.              }
  164.             //CODIGO DA FUNCTION
  165.            // close the transaction
  166.             TTransaction::close();
  167.             }
  168.             else
  169.             {
  170.                 $this->form->clear();
  171.                  TSession::setValue('parcelas',array());
  172.             }
  173.         }
  174.         catch (Exception $e// in case of exception
  175.         {
  176.             // shows the exception error message
  177.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  178.             
  179.             // undo all pending operations
  180.             TTransaction::rollback();
  181.         }
  182.         
  183.     }
  184. }
  185. ?>