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?
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?
- <?php
- public static function onChange($param)
- {
- if (!empty($param['list_empreendimento'])){
- $empField = $param['_field_id'];//ID do field empreendimento
- $vet = explode('_', $empField);// apenas o codigo
- $empId = $param['_field_value'];//Valor do campo empreendimento
- $apl_name = "list_aplicacao_".$vet[2];//ID do field aplicacao. campo que receberá os dados
- TTransaction::open('sqlserver');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('empreendimento_id', '=', $empId ));
- //$criteria->add(new TFilter('status', '=', 1));
- $repository = new TRepository('ViewEmpreendimentos');
- $aplicacaos = $repository->load($criteria);
- $options = array();
- foreach ($aplicacaos as $aplicacao){
- $options[$aplicacao->id] = $aplicacao->aplicacao;
- }
- //carrega a combo... $apl_name é o fieldId e não o fieldName
- TCombo::reload('form_liberacao', $apl_name, $options, true);
- TTransaction::close();
- }
- }
- ?>
Você pode limpar a combo via javascript antes de chamar a função reload:
Outra coisa, você também pode usar a função reloadFromModel para evitar ter que buscar as informações e popular o array manualmente.
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?
Sim, você pode customizar o javascript executado no momento do clone. Veja a função setCloneFunction da classe TFieldList.
Bacana, mas como customizar essa função?
procurei no site do Adianti sobre essa função mas não encontrei muito.
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: