Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TCombo não recebe valor do banco Tenho um TCombo, que dependendo de qual item selecionado o proximo TCombo recebe outros valores. Até ai tudo bem, porém quando busco do banco o valor salvo dos dois combos, o primeiro é selecionado normalmente, já o segundo é preenchido mas não selecionado no valor certo. Abaixo as funções que fazem as alterações nos combos. ...
T
TCombo não recebe valor do banco  
Tenho um TCombo, que dependendo de qual item selecionado o proximo TCombo recebe outros valores. Até ai tudo bem, porém quando busco do banco o valor salvo dos dois combos, o primeiro é selecionado normalmente, já o segundo é preenchido mas não selecionado no valor certo.

Abaixo as funções que fazem as alterações nos combos.

  1. <?php
  2. static function ListaCampos($param)
  3.     {
  4.         $opcoes_campo self::getOpcoesModulo($param['tipoSistema']);
  5.         TCombo::reload('metas''modulo'$opcoes_campo);
  6.     }
  7.     
  8.     static function getOpcoesModulo($tipoSistema)
  9.     {
  10.         if($tipoSistema == 'W')
  11.         {
  12.             $opcoes_campo = array('0' => 'Cadastro',
  13.                                   '1' => 'Administração',
  14.                                   '2' => 'Logs',
  15.                                   '3' => 'Somicro');
  16.         }
  17.         else if($tipoSistema == 'G')
  18.         {
  19.             $opcoes_campo = array('0' => 'Cadastros',
  20.                                   '1' => 'Orçamentos',
  21.                                   '2' => 'Serviços',
  22.                                   '3' => 'C.R.M',
  23.                                   '4' => 'Produção',
  24.                                   '5' => 'Comunicador',
  25.                                   '6' => 'Movimentações',
  26.                                   '7' => 'Estoque',
  27.                                   '8' => 'Fiscal',
  28.                                   '9' => 'Gráficos');
  29.         }
  30.         else if($tipoSistema == 'F')
  31.         {
  32.             $opcoes_campo = array('0' => 'Vender',
  33.                                   '1' => 'Cadastrar',
  34.                                   '2' => 'Consultar',
  35.                                   '3' => 'Atendimento',
  36.                                   '4' => 'Menu Fiscal',
  37.                                   '5' => 'Comandos do ECF',
  38.                                   '6' => 'Utilitários',
  39.                                   '7' => 'Operações Técnicas');
  40.         }
  41.         return $opcoes_campo;
  42.     }
  43. ?>


E agora o onEdit que pega o valor do banco e joga no formulario(que é quando ele não seleciona o valor do segundo combo)

  1. <?php
  2. function onEdit$param )
  3.     {
  4.         try
  5.         {
  6.             TTransaction::open($this->dbname);
  7.             
  8.             if(isset($param['key']))
  9.             {
  10.                 $key $param['key'];
  11.                 $obj = new Cfg_Metas($key);
  12.                 
  13.                 $obj->dtCadastro TDate::date2br($obj->dtCadastro);
  14.                 $obj->dtLimite TDate::date2br($obj->dtLimite);
  15.                 
  16.                 $descricao_cliente $obj->cad_cliente->razaoSocial;
  17.                 $obj->cliente      $descricao_cliente;
  18.                 
  19.                 $param['tipoSistema'] = $obj->tipoSistema;
  20.                 $this->ListaCampos($param);
  21.                 $this->form->setData($obj);
  22.             }
  23.             
  24.             TTransaction::close();
  25.         }
  26.         catch (Exception $e)
  27.         {
  28.             new TMessage('error'$e->getMessage());
  29.         }
  30.     }
  31. ?>

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


NR

A função $this->form->setData está enviando os dados para o formulário antes que combo de módulos seja preenchida(TCombo::reload executa javascript para carregar a combo).

Sempre que seu formulário tiver combos carregadas dinamicamente, utilize a função TForm::sendData, deste modo as requisições serão jogadas em uma pilha e executadas somente após o término da operação anterior:

  1. <?php
  2.     function onEdit$param )
  3.         {
  4.             try
  5.             {
  6.                 TTransaction::open($this->dbname);
  7.                 
  8.                 if(isset($param['key']))
  9.                 {
  10.                     $key $param['key'];
  11.                     $obj = new Cfg_Metas($key);
  12.                     
  13.                     $obj->dtCadastro TDate::date2br($obj->dtCadastro);
  14.                     $obj->dtLimite TDate::date2br($obj->dtLimite);
  15.                     
  16.                     $descricao_cliente $obj->cad_cliente->razaoSocial;
  17.                     $obj->cliente      $descricao_cliente;
  18.                     
  19.                     $dados = new stdclass();
  20.                     $dados->tipoSistema $obj->tipoSistema;
  21.                     $dados->modulo $obj->modulo;
  22.                     TForm::sendData('metas',$dados);
  23.                     $this->form->setData($obj);
  24.                 }
  25.                 
  26.                 TTransaction::close();
  27.             }
  28.             catch (Exception $e)
  29.             {
  30.                 new TMessage('error'$e->getMessage());
  31.             }
  32.         }
  33. ?>