Pegar texto do combo Como faço pra além de pegar o valor selecionado, pegar também o texto selecionado? ...
T
Pegar texto do combo  
Como faço pra além de pegar o valor selecionado, pegar também o texto selecionado?


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


AM

Boa tarde,
este teu combo vem do banco de dados é um tdbcombo ?
T

Não é um TCombo!
NR

Thiago, você pode colocar o array com as opções da combo em uma variável e capturar na função onSave:
 
  1. <?php
  2. //construct
  3. $this->opcoes_combo = array('1'=>'Opcao 1','2'=>'Opcao 2');
  4. $combo = new TCombo('combo');
  5. $combo->addItems($this->opcoes);
  6. //onSave
  7. $data = $this->form->getData();
  8. $texto_selecionado = $this->opcoes_combo[$data->combo];
  9. ?>
T

Nataniel,

O problema é que a função que determina quais opções irão aparecer no combo é estática, pois é uma função chamada no onChangeAction de outro combo, ai não consigo utilizar o $this->opcoes_combo.

Alguma sugestão?

NR

Crie a variável como estática:
 
  1. <?php
  2. // declaracao
  3. static $opcoes_combo = array('1'=>'Opcao 1','2'=>'Opcao 2');
  4. //utilizacao
  5. self::$opcoes_combo;
  6. ?>

T

Ainda assim não consegui, veja se pode me dar uma luz!

 
  1. <?php
  2. //Declaração
  3. static $opcoes_campo;
  4. //Troca do conteudo do campo, no setChangeAction
  5. static function ListaCampos($param)
  6. {
  7. if($param['tabela'] == 'Cad_Contato')
  8. {
  9. self::$opcoes_campo = array('id' => 'ID',
  10. 'nome' => 'Nome',
  11. 'telefone' => 'Telefone',
  12. 'celular' => 'Celular',
  13. 'email' => 'Email');
  14. }
  15. else if($param['tabela'] == 'Cad_Subgrupo')
  16. {
  17. self::$opcoes_campo = array('id' => 'ID',
  18. 'descricao' => 'Descrição',
  19. 'cad_grupo->descricao' => 'Grupo');
  20. }
  21. TCombo::reload('gerador', 'campo', self::$opcoes_campo);
  22. TButton::enableField('gerador', 'inserir');
  23. }
  24. //Inserção do conteudo no onInsert
  25. function onInsert($param)
  26. {
  27. $dados = $this->form->getData();
  28. $items = TSession::getValue('items');
  29. $texto = self::$opcoes_campo[$dados->campo];
  30. print_r ($texto);
  31. $key = $dados->campo;
  32. $items[ $key ] = array('campo' => $dados->campo,
  33. 'tamanho' => $dados->tamanho,
  34. 'alinhamento' => $dados->alinhamento);
  35. TSession::setValue('items', $items);
  36. $dados->campo = 'id';
  37. $dados->tamanho = 100;
  38. $dados->alinhamento = 'left';
  39. $this->form->setData($dados);
  40. $this->onReload($param);
  41. $this->ListaCampos($param);
  42. }
  43. ?>

NR

Como os dados mudam de acordo com a tabela selecionada, você pode fazer uma função para retorná-los:
 
  1. <?php
  2. static function getOpcoesTabela($tabela)
  3. {
  4. if($tabela == 'Cad_Contato')
  5. {
  6. $opcoes_campo = array('id' => 'ID',
  7. 'nome' => 'Nome',
  8. 'telefone' => 'Telefone',
  9. 'celular' => 'Celular',
  10. 'email' => 'Email');
  11. }
  12. else if($tabela == 'Cad_Subgrupo')
  13. {
  14. $opcoes_campo = array('id' => 'ID',
  15. 'descricao' => 'Descrição',
  16. 'cad_grupo->descricao' => 'Grupo');
  17. }
  18. return $opcoes_campo;
  19. }
  20. static function ListaCampos($param)
  21. {
  22. $opcoes_campo = self::getOpcoesTabela($param['tabela']);
  23. TCombo::reload('gerador', 'campo', $opcoes_campo);
  24. TButton::enableField('gerador', 'inserir');
  25. }
  26. function onInsert($param)
  27. {
  28. $dados = $this->form->getData();
  29. $items = TSession::getValue('items');
  30. $opcoes_campo = self::getOpcoesTabela($dados->tabela);
  31. $texto = $opcoes_campo[$dados->campo];
  32. print_r ($texto);
  33. ...
  34. }
  35. ?>
T

Funcionou! Muito obrigado.