Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TSeekButton Personalizado no MultiField Prezados bom dia, Estou implementando uma tela no qual utilizando TMultiField. Neste TMultiField o usuário aciona um TSeekButton personalizado. O usuário realiza a pesquisa e ao retornar, o sistema não atualiza os campos dentro do TMultiField. Sei que o o problema é a forma que o TSeekButton retorna os dados. Da maneira usual, informo o formulário e ele retorna para o campo do ...
CG
TSeekButton Personalizado no MultiField  
Fechado
Prezados bom dia,

Estou implementando uma tela no qual utilizando TMultiField.

Neste TMultiField o usuário aciona um TSeekButton personalizado.

O usuário realiza a pesquisa e ao retornar, o sistema não atualiza os campos dentro do TMultiField.

Sei que o o problema é a forma que o TSeekButton retorna os dados.

Da maneira usual, informo o formulário e ele retorna para o campo do formulário.

Seguindo a mesma lógica, informei o nome do TMultiField no lugar do form, mas não deu certo.

Alguém sabe como que faço para funcionar?

Segue o trecho do meu código:

  1. <?php 
  2.        //lookup veículo
  3.         $objveiculo = new VeiculoSeekForm;
  4.         $actionveiculo = new TAction(array($objveiculo'onReload'));
  5.         $veiculo_id->setAction($actionveiculo);
  6.         TSession::setValue('Form_VeiculoSeek','veiculos');
  7. $veiculos = new TMultiField('veiculos');
  8.         $veiculos->setOrientation('horizontal');  
  9.         $veiculos->setHeight(140);
  10.         $veiculos->addField('veiculo_id''Código do Veículo'$veiculo_id200TRUE);
  11.         $veiculos->addField('placa_veiculo','Placa do Veículo'$placa_veiculo200TRUE);
  12.  ?>

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)


CG

Apenas complementando, faltou o código do campo placa do veículo:

  1. <?php
  2. $placa_veiculo = new TEntry('placa_veiculo');
  3.         $placa_veiculo->setEditable(FALSE);
  4. ?>
PD

é carlos esse erro é bem comum, mas te darei a luz, rere

  1. <?php
  2.  // cria o multifield
  3.         $mult = new TMultiField('servicoss');
  4.     
  5.        // cria o TSeekButton
  6.         $servico_id                     = new TSeekButton('servicoss_id');
  7. //observe os nomes dos campos, 
  8. todos tm prefix igual ao nome do multfield
  9.         $servico_nome                      = new TEntry('servicoss_nome');
  10.         $servico_preco                        = new TEntry('servicoss_preco');
  11.         $servico_nome->setEditable(false);
  12.         $servico_preco->setEditable(false);
  13.      // class PStandartSeek
  14.            $obj = new PStandartSeek();
  15.            //prefix usado nos campos 
  16.            //ex categoria_id
  17.              $obj->setPrefix('servicoss');
  18.            // mode a ser usada
  19.            $obj->setModel('Servicos');
  20.          //primary key da model
  21.            $obj->setKey('id');
  22.          //formulario de retorno
  23.            $obj->setParentForm('form_Clientes');
  24.          //banco a ser usado
  25.            $obj->setBanco('sample');
  26.          //capos a serem mostrados na gris
  27.          //campo=>label
  28.          // estes campos seram retornados al selecionar um registro
  29.          //mas o campo deve ter o prefixo
  30.          //ex categoria_nome
  31.            $obj->setCampos(array('id'=>'Codigo','nome'=>'Nome','preco'=>'Preco'));
  32.          //campo a ser usado para filtro
  33.            $obj->setFiltro('nome');
  34.          //altura da janela
  35.            $obj->setHeight(300);
  36.          //largura da janela
  37.            $obj->setWidth(500);
  38.          //titulo da janela
  39.            $obj->setTitulo('Servicos');
  40.            
  41.          //cria a action
  42.            $action = new TAction(array($obj,'onReload'));
  43.            // iseri a action no TStandartSeek
  44.            $servico_id->setAction($action); 
  45.            
  46.         $mult->addField('id','Codigo',$servico_id,50);
  47.         $mult->addField('nome','Nome',$servico_nome,100);
  48.         $mult->addField('preco','Preco',$servico_preco,100);
CG

Fala meu amigo,

Deu certo!!

Mais uma vez muito obrigado.
CG

Fala meu amigo bom dia,

A sua solução funcionou quando o form possui apenas 1 Multifield.

Porém, quando tenho 2 Multifields no mesmo form não dá certo.

No lookup (tela de consulta do do seekbutton) exibe somente a segunda tela de pesquisa.

Tentei de outras formas, mas não consegui.

Poderia me ajudar?
PD

Carlos,

Quando você usa TSeekButton com TMultifield, o nome dos campos deve ser precedido pelo nome do próprio Multifield, veja que adicionei "produtos_" na frente...

  1. <?php
  2.     $action->setParameter('receive_key','produtos_produto_id');
  3.     $action->setParameter('receive_field','produtos_produto_nome');
  4. ?>



Caso você tenha dúvidas de como eu fiz, dê uma olhada no cadastro de livros do Library, pois lá tem uma multifield de autores, que usa seekbutton:
www.adianti.com.br/framework-library

Att,
Pablo
CG

Fala Pablo!

Entendi.. mas resolvi de outra maneira.

Criei 2 SeekButtons personalizados e no retorno do para a tela principal coloquei o nome do multifield precedendo o nome do campo.

Segue o trecho do código que faz com que minha funcionalidade funcionasse:

  1. <?php
  2.     function onSelect($param)
  3.     {
  4.         try
  5.         {
  6.             $key $param['key'];
  7.             TTransaction::open('sollus');
  8.             
  9.             // load the active record
  10.             $notafiscal = new NotaFiscalCliente($key);
  11.             $formSession TSession::getValue('form_notafiscalclienteseek');
  12.             $object = new StdClass;
  13.             
  14.             if ($formSession == 'form_Viagem'){
  15.                 $object->notasfiscais_id $notafiscal->id;
  16.                 $object->notasfiscais_numero $notafiscal->numero;
  17.                 $object->notasfiscais_DataEmissaoFormatada $notafiscal->get_DataEmissaoFormatada();
  18.                 
  19.             
  20.             }else{
  21.                 $object->notafiscalcliente_id  $notafiscal->id;
  22.                 $object->numero $notafiscal->numero;
  23.                 $object->dataemissao $notafiscal->get_DataEmissaoFormatada();            
  24.             }
  25.             
  26.             // closes the transaction
  27.             TTransaction::close();
  28.                         
  29.             //TForm::sendData('form_Aeroporto', $object);                        
  30.             // busca o form da seção
  31.             
  32.             TForm::sendData($formSession$object);
  33.                         
  34.             parent::closeWindow(); // closes the window
  35.         }
  36.         catch (Exception $e// em caso de exceção
  37.         {
  38.             // clear fields
  39.             if ($formSession == 'form_Viagem'){
  40.                 $object->notasfiscais_id '';
  41.                 $object->notasfiscais_numero '';
  42.                 $object->notasfiscais_dataemissao '';
  43.                 
  44.             
  45.             }else{
  46.                 $object->notafiscalcliente_id '';
  47.                 $object->numero  '';
  48.                 $object->dataemissao  '';           
  49.             }      
  50.             
  51.             //TForm::sendData('form_Aeroporto', $object); //form_Endereco
  52.            
  53.             // busca o form da seção
  54.             $formSession TSession::getValue('form_notafiscalclienteseek');
  55.             TForm::sendData($formSession$object);
  56.                       
  57.             // undo pending operations
  58.             TTransaction::rollback();
  59.         }
  60.     }
  61. ?>