Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Enviar dados para Field List no método onEdit Olá pessoal, Se for para enviar os dados diretamente ao campos do field list é tranquilo, mas no caso de um TCombo que depende dos dados de um TDBCombo, não consegui fazer funcionar, pois os dados são inseridos por meio do método addDetail do Field List e este não aciona o método onChange. tentei pegar o nome dos campos da Field List para acionar o onChange manualmente, mas tbm não c...
BI
Enviar dados para Field List no método onEdit  
Olá pessoal,
Se for para enviar os dados diretamente ao campos do field list é tranquilo,
mas no caso de um TCombo que depende dos dados de um TDBCombo, não consegui fazer funcionar,
pois os dados são inseridos por meio do método addDetail do Field List e este não aciona o método onChange.
tentei pegar o nome dos campos da Field List para acionar o onChange manualmente, mas tbm não consegui.

  1. <?php  
  2.     public function onEdit$param )
  3.     {
  4.         try
  5.         {
  6.             if (isset($param['key']))
  7.             {
  8.                 $key $param['key'];  // get the parameter $key
  9.                 TTransaction::open('sqlserver'); // open a transaction
  10.                 $object = new liberacao($key); // instantiates the Active Record
  11.                 
  12.                 if ($object->status == 1){
  13.                     $action = new TAction(array('liberacaoList','onReload'));
  14.                     new TMessage('Error','PES Aprovado! Não é possivel fazer alteração!'$action);
  15.                     die();
  16.                 }elseif($object->status == 2){
  17.                     $action = new TAction(array('liberacaoList','onReload'));
  18.                     new TMessage('Error','PES Cancelado! Não é possivel fazer alteração!'$action);
  19.                     die();
  20.                 }
  21.                 
  22.                 $data explode(' '$object->ini_previsto);
  23.                 $data2 explode(' '$object->fin_previsto);
  24.                 $object->ini_previsto $data[0];
  25.                 $object->fin_previsto $data2[0];
  26.                 
  27.                 $object->hora_ini substr($data[1], 0,5);
  28.                 $object->hora_fin substr($data2[1], 0,5);
  29.                 
  30.                 //-------------------------------------------------------------------
  31.                     $items  PesAplicacao::where('pes_id''='$key)->load();
  32.                     
  33.                     $this->list_apl->addHeader();
  34.                     
  35.                     if ($items)
  36.                     {
  37.                         foreach($items  as $item )
  38.                         {
  39.                             $apl = new Aplicacao($item->aplicacao_id);
  40.                             
  41.                             $detail = new stdClass;
  42.                             $detail->list_empreendimento $apl->empreendimento_id;
  43.                             
  44.                             //este campo depende do onChange para carregar a lista.
  45.                             $detail->list_aplicacao $apl->id;
  46.                             $teste $this->list_apl->addDetail($detail);
  47.                             
  48.                         }
  49.                         $this->list_apl->addCloneAction();
  50.                         
  51.                     }
  52.                     else
  53.                     {
  54.                         //$this->fieldlist->addHeader();
  55.                         $this->list_apl->addDetail( new stdClass );
  56.                         $this->list_apl->addCloneAction();
  57.                     }
  58.                 
  59.                 
  60.                                 
  61.                 $this->form->setData($object); // fill the form
  62.                 
  63.                          
  64.                 TTransaction::close(); // close the transaction
  65.             }
  66.             else
  67.             {
  68.                 $this->form->clear();
  69.             }
  70.         }
  71.         catch (Exception $e// in case of exception
  72.         {
  73.             new TMessage('error'$e->getMessage()); // shows the exception error message
  74.             TTransaction::rollback(); // undo all pending operations
  75.         }
  76.     }
  77.     public static function onChange($param)
  78.     {
  79.         
  80.         if (!empty($param['list_empreendimento'])){
  81.             
  82.             $empField $param['_field_id'];//nome do field empreendimento
  83.             $vet explode('_'$empField);// apenas o codigo
  84.             $empId $param['_field_value'];//ID do campo empreendimento
  85.             
  86.             $apl_name "list_aplicacao_".$vet[2];//nome do field aplicacao
  87.             
  88.             
  89.             TTransaction::open('sqlserver');
  90.             $criteria = new TCriteria;
  91.             $criteria->add(new TFilter('empreendimento_id''='$empId ));
  92.             //$criteria->add(new TFilter('status', '=', 1));
  93.             
  94.             $repository = new TRepository('ViewEmpreendimentos');
  95.             $aplicacaos $repository->load($criteria);
  96.             
  97.             $options = array();
  98.             foreach ($aplicacaos as $aplicacao){
  99.                 $options[$aplicacao->id] = $aplicacao->aplicacao;
  100.             }
  101.             
  102.             TScript::create("$('#{$apl_name}').html('')");
  103.             
  104.             //carrega a combo
  105.             TCombo::reload('form_liberacao'$apl_name$optionstrue);
  106.             
  107.             TTransaction::close();
  108.         }
  109.     }
  110. ?>

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 (3)


NR

A classe TFieldList é filha de TTable e a função addDetail retorna a linha acrescentada a essa tabela. Assim você consegue capturar os elementos de cada linha:
  1. <?php
  2. // onEdit
  3. $row $this->list_apl->addDetail($detail); // retorna linha da tabela
  4. $componente $row->get(0)->get(0); // o primeiro get(0) vai retornar o primeiro elemento da linha(td). Depois, com mais um get(0) capturamos o primeiro elemento dessa td, que no caso será o seu primeiro componente adicionado ao fieldlist.
  5. // supondo que $componente = combo
  6. $componente->addItems($seu_array);
  7. ?>
BI

Deu certo, muito obrigado!
RH

Como definir quantidade máxima de linhas TFieldList (addCloneAction)