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.
<?php    public static function selecionaServico( $param )    {        $input_id     = $param['_field_id'];        $servico_id   = $param['_field_value'];        $input_pieces = explode('_', $input_id);        $unique_id    = end($input_pieces);        try        {            TTransaction::open( self::$db );            $vlr_servico = FuncoesExtra::PegaDadosColuna('select s_valor from servicos where s_id = ' . $servico_id, 's_valor', 'N');            $response = new stdClass;            $response->{'list_as_valor_'.$unique_id} = number_format($vlr_servico, 2, ',', '.');            TForm::sendData('form_Atendimentos', $response);                        // Carregar lista de produtos deste servico            $dados = ServicosProdutos::where('sp_id1', '=', $servico_id)->load();            foreach ( $dados as $item )            {                $detail                     = new stdClass;                $detail->list_ap_qtde       = $item->sp_qtde;                $detail->list_ap_valor      = $item->sp_custo;                                 ???????????????;                        }            TForm::sendData('form_Atendimentos', $detail);            TTransaction::close();            self::calculaValores( $param );        }        catch (Exception $e)        {            TTransaction::rollback();        }    }?>


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:
<?php                // Servicos                $items = AtendiServicos::where('as_id1', '=', $key)->load();                if ($items)                {                    $this->fieldlist->addHeader();                    foreach($items  as $item )                    {                        $detail = new stdClass;                        $detail->list_as_cd_servico = $item->as_cd_servico;                        $detail->list_as_valor = $item->as_valor;                        $detail->list_as_obs = $item->as_obs;                        $this->fieldlist->addDetail($detail);                    }                    $this->fieldlist->addCloneAction();                }                else                {                    $this->fieldlist->addHeader();                    $this->fieldlist->addDetail( new stdClass );                    $this->fieldlist->addCloneAction();                 }                // Fim grade Servicos                                // produtos                $items  = AtendiProdutos::where('ap_id1', '=', $key)->load();                if ($items)                {                    $this->fieldlist2->addHeader();                    foreach($items  as $item )                    {                        $detail                     = new stdClass;                        $detail->list_ap_cd_produto = $item->ap_cd_produto;                        $detail->list_ap_qtde       = $item->ap_qtde;                        $detail->list_ap_valor      = $item->ap_valor;                        $this->fieldlist2->addDetail($detail);                    }                    $this->fieldlist2->addCloneAction();                }                else                {                    $this->fieldlist2->addHeader();                    $this->fieldlist2->addDetail( new stdClass );                    $this->fieldlist2->addCloneAction();                 }?>


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:
<?php$this->fieldlist2->name  = 'fieldlist2';?>


Foi adicionar essa linha e tudo funcionou, muito obrigado.

Um abraço.