none
FORMATAR EXIBIÇÃO DE OBJETO NO COMBOBOX RRS feed

  • Pergunta

  • Bom dia colegas.

    Estou com um problema ao exibir os dados de uma tabela no COMBOBOX.

    Ao carregar os dados, deveria aparecer o nome do USUÁRIO ao invés de "ObjetoTransferencia.Usuarios", conforme a imagem abaixo:

    Vi que o COMBOBOX tem uma ação chamada FORMAT quer formata os dados exibidos.

    Como eu poderia formatar o objeto para que eu possa exibir de forma correta?


    • Editado JehanKheller terça-feira, 1 de outubro de 2019 12:53
    terça-feira, 1 de outubro de 2019 12:52

Respostas

  • Olhando assim esta OK, tanto que peguei seu codigo e fiz um teste apenas substituindo o seu objeto usuaariosColecao por um List<object> e funcionou perfeitamente.
    Talvez seja justamente o seu objeto que o combobox não esta conseguindo ler.
    Código exemplo:

    private void CarregarDados()
            {
                try
                {
                    // Carrega os dados dos usuários onde a situação do cadastro seja ativo.
                    var usuariosColecao = new List<object>()
                    {
                       new { IDUsuario = 0, Usuario="Joao da Silva" },
                       new { IDUsuario = 1, Usuario="Maria Feliz" },
                       new { IDUsuario = 2, Usuario="João Grilo" },
                       new { IDUsuario = 3, Usuario="Chicó" },
                    };
                     cbUsuario.DataSource = null;
                    cbUsuario.DataSource = usuariosColecao;
                    cbUsuario.Update();
                    cbUsuario.Refresh();
                    cbUsuario.ValueMember = "IDUsuario";
                    cbUsuario.DisplayMember = "Usuario";
                 }
                catch (Exception ex)
                {
                    MessageBox.Show
                    (
                        "Não foi possível carregar as informações.\n\n" + "Detalhes: " + ex,
                        "Aviso",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Exclamation
                    );
                }
            }

    • Marcado como Resposta JehanKheller terça-feira, 1 de outubro de 2019 19:15
    terça-feira, 1 de outubro de 2019 18:38

Todas as Respostas

  • como esta fazendo para popular o combobox(select)?
    esta usando ajax ou por viewdata?
    terça-feira, 1 de outubro de 2019 17:55
  • Estou trabalhando com Windows Forms.

    O código que estou utilizando para popular o combobox segue abaixo:

            private void CarregarDados()
            {
                lbTentarNovamente.Visible = false;
    
                try
                {
                    // Carrega os dados dos usuários onde a situação do cadastro seja ativo.
                    UsuariosNegocios usuariosNegocios = new UsuariosNegocios();
                    UsuariosColecao usuariosColecao = new UsuariosColecao();
                    usuariosColecao = usuariosNegocios.Consultar(0, string.Empty, string.Empty, true);
                    cbUsuario.DataSource = null;
                    cbUsuario.DataSource = usuariosColecao;
                    cbUsuario.Update();
                    cbUsuario.Refresh();
                    cbUsuario.ValueMember = "IDUsuario";
                    cbUsuario.DisplayMember = "Usuario";
                    
                }
                catch (Exception ex)
                {
                    MessageBox.Show
                    (
                        "Não foi possível carregar as informações.\n\n" + "Detalhes: " + ex,
                        "Aviso",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Exclamation
                    );
    
                    if (lbTentarNovamente.Visible == false)
                    {
                        lbTentarNovamente.Visible = true;
                    }
                }
            }
    

    terça-feira, 1 de outubro de 2019 18:04
  • Olhando assim esta OK, tanto que peguei seu codigo e fiz um teste apenas substituindo o seu objeto usuaariosColecao por um List<object> e funcionou perfeitamente.
    Talvez seja justamente o seu objeto que o combobox não esta conseguindo ler.
    Código exemplo:

    private void CarregarDados()
            {
                try
                {
                    // Carrega os dados dos usuários onde a situação do cadastro seja ativo.
                    var usuariosColecao = new List<object>()
                    {
                       new { IDUsuario = 0, Usuario="Joao da Silva" },
                       new { IDUsuario = 1, Usuario="Maria Feliz" },
                       new { IDUsuario = 2, Usuario="João Grilo" },
                       new { IDUsuario = 3, Usuario="Chicó" },
                    };
                     cbUsuario.DataSource = null;
                    cbUsuario.DataSource = usuariosColecao;
                    cbUsuario.Update();
                    cbUsuario.Refresh();
                    cbUsuario.ValueMember = "IDUsuario";
                    cbUsuario.DisplayMember = "Usuario";
                 }
                catch (Exception ex)
                {
                    MessageBox.Show
                    (
                        "Não foi possível carregar as informações.\n\n" + "Detalhes: " + ex,
                        "Aviso",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Exclamation
                    );
                }
            }

    • Marcado como Resposta JehanKheller terça-feira, 1 de outubro de 2019 19:15
    terça-feira, 1 de outubro de 2019 18:38
  • Imagem da execução:


    terça-feira, 1 de outubro de 2019 18:39
  • Tenho que confessar que, se eu utilizar um combobox comum, disponível na biblioteca do visual studio, o componente se comporta bem, e não há necessidade de formata-lo. O código que eu disponibilizei é suficiente para preenche-lo corretamente.

    O controle que está na imagem de exibição, é um controle personalizado que encontrei no git. Por isso a necessidade de um algoritmo para utilizar na ação Format.

    É necessário realizar uma ação parecida quando se trabalha com DataGridView, se vc carregar um objeto do banco de dados diretamente no componente sem tratamento, as linhas aparecem como ObjetoTransferencia.Usuarios. Algo do tipo.

    Mas se não for possível realizar esse tratamento no combobox, eu reajusto meu layout para utilizar o combobox padrão do visual studio.

    Já deixo meu agradecimento pela atenção.

    terça-feira, 1 de outubro de 2019 18:53
  • OK. Boa sorte.
    Marque como resolvida por favor.

    • Marcado como Resposta JehanKheller terça-feira, 1 de outubro de 2019 19:15
    • Não Marcado como Resposta JehanKheller terça-feira, 1 de outubro de 2019 19:15
    terça-feira, 1 de outubro de 2019 19:08