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::open( self::$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_servico, 2, ',', '.');
  14. TForm::sendData('form_Atendimentos', $response);
  15. // Carregar lista de produtos deste servico
  16. $dados = ServicosProdutos::where('sp_id1', '=', $servico_id)->load();
  17. foreach ( $dados as $item )
  18. {
  19. $detail = new stdClass;
  20. $detail->list_ap_qtde = $item->sp_qtde;
  21. $detail->list_ap_valor = $item->sp_custo;
  22. ???????????????;
  23. }
  24. TForm::sendData('form_Atendimentos', $detail);
  25. TTransaction::close();
  26. self::calculaValores( $param );
  27. }
  28. catch (Exception $e)
  29. {
  30. TTransaction::rollback();
  31. }
  32. }
  33. ?>


Que comando uso para adicionar uma nova linha na fieldlist2 .

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 (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. // produtos
  25. $items = AtendiProdutos::where('ap_id1', '=', $key)->load();
  26. if ($items)
  27. {
  28. $this->fieldlist2->addHeader();
  29. foreach($items as $item )
  30. {
  31. $detail = new stdClass;
  32. $detail->list_ap_cd_produto = $item->ap_cd_produto;
  33. $detail->list_ap_qtde = $item->ap_qtde;
  34. $detail->list_ap_valor = $item->ap_valor;
  35. $this->fieldlist2->addDetail($detail);
  36. }
  37. $this->fieldlist2->addCloneAction();
  38. }
  39. else
  40. {
  41. $this->fieldlist2->addHeader();
  42. $this->fieldlist2->addDetail( new stdClass );
  43. $this->fieldlist2->addCloneAction();
  44. }
  45. ?>


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.