Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Field List com TCombo e método onChange Olá pessoal, em um formulário com Field List, preciso carregar uma TCombo por meio do método onChange... neste caso preciso passa os dados por meio do ID do Field. assim os dados estão sendo carregados, mas ao adicionar campos na fieldList, o TCombo carrega os dados dos TCombo anteriores... como resolver? ...
BI
Field List com TCombo e método onChange  
Olá pessoal,
em um formulário com Field List, preciso carregar uma TCombo por meio do método onChange...
neste caso preciso passa os dados por meio do ID do Field.
assim os dados estão sendo carregados, mas ao adicionar campos na fieldList, o TCombo carrega os dados dos TCombo anteriores...

como resolver?

  1. <?php 
  2.     public static function onChange($param)
  3.     {
  4.         
  5.         if (!empty($param['list_empreendimento'])){
  6.             
  7.             $empField $param['_field_id'];//ID do field empreendimento
  8.             $vet explode('_'$empField);// apenas o codigo
  9.             $empId $param['_field_value'];//Valor do campo empreendimento
  10.             
  11.             $apl_name "list_aplicacao_".$vet[2];//ID do field aplicacao. campo que receberá os dados
  12.             
  13.             
  14.             TTransaction::open('sqlserver');
  15.             $criteria = new TCriteria;
  16.             $criteria->add(new TFilter('empreendimento_id''='$empId ));
  17.             //$criteria->add(new TFilter('status', '=', 1));
  18.             
  19.             $repository = new TRepository('ViewEmpreendimentos');
  20.             $aplicacaos $repository->load($criteria);
  21.             
  22.             $options = array();
  23.             foreach ($aplicacaos as $aplicacao){
  24.                 $options[$aplicacao->id] = $aplicacao->aplicacao;
  25.             }
  26.             
  27.             //carrega a combo... $apl_name é o fieldId e não o fieldName
  28.             TCombo::reload('form_liberacao'$apl_name$optionstrue);
  29.             
  30.             TTransaction::close();
  31.         }
  32.     }
  33. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (5)


NR

Você pode limpar a combo via javascript antes de chamar a função reload:
  1. <?php
  2. TScript::create("$('#{$apl_name}').html('');");
  3. ?>

Outra coisa, você também pode usar a função reloadFromModel para evitar ter que buscar as informações e popular o array manualmente.
BI

Obrigado por ajudar!
Esse é um ajuste técnico... o TCombo é clonado com os itens do TCombo anterior
para sanar o problema de vez, teria limpar os itens na hora de clonar os elementos, isso é possível?
NR

Sim, você pode customizar o javascript executado no momento do clone. Veja a função setCloneFunction da classe TFieldList.
BI

Bacana, mas como customizar essa função?
procurei no site do Adianti sobre essa função mas não encontrei muito.
NR

Acho que não precisa mexer na função nesse caso. Você pode continuar chamando a função ttable_clone_previous_row e adicionar o seu javascript após ela:
  1. <?php
  2. $list = new TFieldList();
  3. $list->setCloneFunction("ttable_clone_previous_row(this); alert(1);");
  4. ?>