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.
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)
Abaixo as funções que fazem as alterações nos combos.
- <?php
- static function ListaCampos($param)
- {
- $opcoes_campo = self::getOpcoesModulo($param['tipoSistema']);
- TCombo::reload('metas', 'modulo', $opcoes_campo);
- }
- static function getOpcoesModulo($tipoSistema)
- {
- if($tipoSistema == 'W')
- {
- $opcoes_campo = array('0' => 'Cadastro',
- '1' => 'Administração',
- '2' => 'Logs',
- '3' => 'Somicro');
- }
- else if($tipoSistema == 'G')
- {
- $opcoes_campo = array('0' => 'Cadastros',
- '1' => 'Orçamentos',
- '2' => 'Serviços',
- '3' => 'C.R.M',
- '4' => 'Produção',
- '5' => 'Comunicador',
- '6' => 'Movimentações',
- '7' => 'Estoque',
- '8' => 'Fiscal',
- '9' => 'Gráficos');
- }
- else if($tipoSistema == 'F')
- {
- $opcoes_campo = array('0' => 'Vender',
- '1' => 'Cadastrar',
- '2' => 'Consultar',
- '3' => 'Atendimento',
- '4' => 'Menu Fiscal',
- '5' => 'Comandos do ECF',
- '6' => 'Utilitários',
- '7' => 'Operações Técnicas');
- }
- return $opcoes_campo;
- }
- ?>
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)
- <?php
- function onEdit( $param )
- {
- try
- {
- TTransaction::open($this->dbname);
- if(isset($param['key']))
- {
- $key = $param['key'];
- $obj = new Cfg_Metas($key);
- $obj->dtCadastro = TDate::date2br($obj->dtCadastro);
- $obj->dtLimite = TDate::date2br($obj->dtLimite);
- $descricao_cliente = $obj->cad_cliente->razaoSocial;
- $obj->cliente = $descricao_cliente;
- $param['tipoSistema'] = $obj->tipoSistema;
- $this->ListaCampos($param);
- $this->form->setData($obj);
- }
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- ?>
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: