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


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. if(isset($param['key']))
  8. {
  9. $key = $param['key'];
  10. $obj = new Cfg_Metas($key);
  11. $obj->dtCadastro = TDate::date2br($obj->dtCadastro);
  12. $obj->dtLimite = TDate::date2br($obj->dtLimite);
  13. $descricao_cliente = $obj->cad_cliente->razaoSocial;
  14. $obj->cliente = $descricao_cliente;
  15. $param['tipoSistema'] = $obj->tipoSistema;
  16. $this->ListaCampos($param);
  17. $this->form->setData($obj);
  18. }
  19. TTransaction::close();
  20. }
  21. catch (Exception $e)
  22. {
  23. new TMessage('error', $e->getMessage());
  24. }
  25. }
  26. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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. if(isset($param['key']))
  8. {
  9. $key = $param['key'];
  10. $obj = new Cfg_Metas($key);
  11. $obj->dtCadastro = TDate::date2br($obj->dtCadastro);
  12. $obj->dtLimite = TDate::date2br($obj->dtLimite);
  13. $descricao_cliente = $obj->cad_cliente->razaoSocial;
  14. $obj->cliente = $descricao_cliente;
  15. $dados = new stdclass();
  16. $dados->tipoSistema = $obj->tipoSistema;
  17. $dados->modulo = $obj->modulo;
  18. TForm::sendData('metas',$dados);
  19. $this->form->setData($obj);
  20. }
  21. TTransaction::close();
  22. }
  23. catch (Exception $e)
  24. {
  25. new TMessage('error', $e->getMessage());
  26. }
  27. }
  28. ?>