menu
Fórum Adianti
menu Menu
De fieldlist1 popular fieldlist2 Hola, bom dia Tenho uma classe de cadastro onde tenho um TFiledList1 (Serviços) e TFiledList2 (Produtos), no fieldlist1 tenho uma acão de selecionar um serviço, no memento que seleciono o serviço tenho que popular o fieldlist2 com os produtos desse serviço selecionado. ...
NM
De fieldlist1 popular fieldlist2  
Hola, bom dia

Tenho uma classe de cadastro onde tenho um TFiledList1 (Serviços) e TFiledList2 (Produtos), no fieldlist1 tenho uma acão de selecionar um serviço, no memento que seleciono o serviço tenho que popular o fieldlist2 com os produtos desse serviço selecionado.
  1. <?php
  2.     public static function selecionaServico$param )
  3.     {
  4.         $input_id     $param['_field_id'];
  5.         $servico_id   $param['_field_value'];
  6.         $input_pieces explode('_'$input_id);
  7.         $unique_id    end($input_pieces);
  8.         try
  9.         {
  10.             TTransaction::openself::$db );
  11.             $vlr_servico FuncoesExtra::PegaDadosColuna('select s_valor from servicos where s_id = ' $servico_id's_valor''N');
  12.             $response = new stdClass;
  13.             $response->{'list_as_valor_'.$unique_id} = number_format($vlr_servico2',''.');
  14.             TForm::sendData('form_Atendimentos'$response);
  15.             
  16.             // Carregar lista de produtos deste servico
  17.             $dados ServicosProdutos::where('sp_id1''='$servico_id)->load();
  18.             foreach ( $dados as $item )
  19.             {
  20.                 $detail                     = new stdClass;
  21.                 $detail->list_ap_qtde       $item->sp_qtde;
  22.                 $detail->list_ap_valor      $item->sp_custo;
  23.                 
  24.                  ???????????????;
  25.             
  26.             }
  27.             TForm::sendData('form_Atendimentos'$detail);
  28.             TTransaction::close();
  29.             self::calculaValores$param );
  30.         }
  31.         catch (Exception $e)
  32.         {
  33.             TTransaction::rollback();
  34.         }
  35.     }
  36. ?>


Que comando uso para adicionar uma nova linha na fieldlist2 .

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


NR

Pode usar a função TForm::sendData. Veja o exemplo dos botões "Fill" e "Clear/Fill" do link abaixo:
https://adianti.com.br/framework_files/tutor/index.php?class=FormFieldListEventsView
NM

Hola Nataniel

Obrigado por responder, talvez não tenha explica bem, tenho uma tabela de SERVICOS e outra tabela filho de SERVICOS_PRODUTOS, tenho um FORM de atendimentos onde vai dados como data, etc... e dois fieldlist um para os serviços prestados e outro fieldlist para os produtos de cada serviço, quando o usuario selecionar um serviço no fieldlist1 o sistema tem que trazer para o fieldlist2 os produtos desse serviço minha duvida e qual comando para usar para ir abrindo linhas novas no fieldlist2.
No onEdit tenho assim:
  1. <?php
  2.                 // Servicos
  3.                 $items AtendiServicos::where('as_id1''='$key)->load();
  4.                 if ($items)
  5.                 {
  6.                     $this->fieldlist->addHeader();
  7.                     foreach($items  as $item )
  8.                     {
  9.                         $detail = new stdClass;
  10.                         $detail->list_as_cd_servico $item->as_cd_servico;
  11.                         $detail->list_as_valor $item->as_valor;
  12.                         $detail->list_as_obs $item->as_obs;
  13.                         $this->fieldlist->addDetail($detail);
  14.                     }
  15.                     $this->fieldlist->addCloneAction();
  16.                 }
  17.                 else
  18.                 {
  19.                     $this->fieldlist->addHeader();
  20.                     $this->fieldlist->addDetail( new stdClass );
  21.                     $this->fieldlist->addCloneAction(); 
  22.                 }
  23.                 // Fim grade Servicos
  24.                 
  25.                 // produtos
  26.                 $items  AtendiProdutos::where('ap_id1''='$key)->load();
  27.                 if ($items)
  28.                 {
  29.                     $this->fieldlist2->addHeader();
  30.                     foreach($items  as $item )
  31.                     {
  32.                         $detail                     = new stdClass;
  33.                         $detail->list_ap_cd_produto $item->ap_cd_produto;
  34.                         $detail->list_ap_qtde       $item->ap_qtde;
  35.                         $detail->list_ap_valor      $item->ap_valor;
  36.                         $this->fieldlist2->addDetail($detail);
  37.                     }
  38.                     $this->fieldlist2->addCloneAction();
  39.                 }
  40.                 else
  41.                 {
  42.                     $this->fieldlist2->addHeader();
  43.                     $this->fieldlist2->addDetail( new stdClass );
  44.                     $this->fieldlist2->addCloneAction(); 
  45.                 }
  46. ?>


Só que na ação do ( $as_cd_servico->setChangeAction( new TAction(array($this, 'selecionaServico')) ); )
chamo a "selecionaServico" que tem que ser STATIC dentro dessa função não posso usar o $this ai minha pergunta como ao selecionar o serviço abrir linhas no fieldlist2 com os dados dos produtos.

Um abraço
NM

Hola
Perdão Nataniel depois que fui ver a parte dos botões no exemplo que você me mandou, acertei o codigo conforme os exemplos e mesmo assim não adicionava as linhas na fieldlist ai fui comparar os codigos para ver o que tinha de diferente e notei que no meu não tinha essa linha:
  1. <?php
  2. $this->fieldlist2->name  'fieldlist2';
  3. ?>


Foi adicionar essa linha e tudo funcionou, muito obrigado.

Um abraço.