none
Inserir "Selecione uma opção..." no comboBox RRS feed

  • Pergunta

  • Quero colocar no meu comboBox, a opção "Selecione uma opção...". Esse ComboBox está sendo carregado com informações via banco de dados. Abaixo, o código:

               Npgsql.NpgsqlConnection con = new Npgsql.NpgsqlConnection();
                con.ConnectionString = @"";

                try
                {
                    con.Open();
                    Npgsql.NpgsqlCommand cmd = new Npgsql.NpgsqlCommand();
                    cmd.Connection = con;
                    cmd.CommandText = "SELECT clienteID, nome FROM Cliente ORDER BY nome ASC";
                    Npgsql.NpgsqlDataReader dr = cmd.ExecuteReader();
                    DataTable dt = new DataTable();
                    dt.Load(dr);
                    cbCliente.ValueMember = "clienteID";
                    cbCliente.DisplayMember = "nome";
                    cbCliente.DataSource = dt;
                    dr.Close();
                }
                catch (Exception)
                {
                    MessageBox.Show("Não existe nenhum registro gravado.");
                }

                con.Close();
                con.Dispose();

    segunda-feira, 8 de junho de 2015 20:19

Respostas

  • OK, 

    altere o sql para

    SELECT 0 as 'clienteId', 
          'Selecione uma opção...' as 'nome' 
    union all 
    (SELECT clienteID, nome FROM Cliente ORDER BY nome ASC)
    Não esqueça de Marcar Como Resposta!


    Natan


    terça-feira, 9 de junho de 2015 16:27

Todas as Respostas

  • Olá, como você está setando o dataSource do Combobox, você não vai conseguir inserir itens manualmente.

    Caso você estivesse inserindo os items manualmente, você poderia incluir o trecho de código antes de inserir os itens.

    this.comboBox1.Items.Add("Selecione uma opção...");
                this.comboBox1.SelectedIndex = 0;


    segunda-feira, 8 de junho de 2015 20:26
  • Sim, eu consigo fazer isso (como relatado na descrição do tópico) em webform mas windowsform...
    segunda-feira, 8 de junho de 2015 20:38
  • Eu te aconselho adicionar os itens manualmente, ai você consegue inserir o que tu quer.

    Abraço!

    segunda-feira, 8 de junho de 2015 20:40
  • Realmente não tem como, esse comboBox trás os clientes do banco de dados, eu queria fazer desse jeito pois trabalho desta forma. Ao entrar no formulário eu não queria que viesse de cara o nome de um cliente, entendeu, queria que o usuário fizesse isso. O Selecione uma opção cairia bem pra mim. 

    Mas se tiver outra sugestão...

    terça-feira, 9 de junho de 2015 00:58
  • Infelizmente pelo fato de tu estar setando o DataSource, adicionar manualmente não será possível.

    Abraço!

    terça-feira, 9 de junho de 2015 11:14
  • Adiciona isso no Sql que dá certo:

    select 0, 'Selecione a Opção'
    union all
    SELECT clienteID, nome 
    FROM Cliente


    Natan

    terça-feira, 9 de junho de 2015 11:24
  • Cria um datatable e adiciona os dados nele (vindos do banco de dados) juntamente  com a linha que precisa.


    Caso não saiba como fazer me avisa é bem simples

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 9 de junho de 2015 12:03
  • Deu certinho, Natan. 

    Obrigado a todos!

    terça-feira, 9 de junho de 2015 15:03
  • Natan, fiz diretamente no banco e deu certinho.

    Mas ao colocar no código ficou assim:

    Abaixo segue codigo:

     con.Open();
                    Npgsql.NpgsqlCommand cmd = new Npgsql.NpgsqlCommand();
                    cmd.Connection = con;
                    cmd.CommandText = "SELECT 0, 'Selecione uma opção...' union all (SELECT clienteID, nome FROM Cliente ORDER BY nome ASC)";
                    Npgsql.NpgsqlDataReader dr = cmd.ExecuteReader();
                    DataTable dt = new DataTable();
                    dt.Load(dr);
                    cbCliente.ValueMember = "clienteID";
                    cbCliente.DisplayMember = "nome";
                    cbCliente.DataSource = dt;
                    dr.Close();

    Tentei mexer em algumas coisas mas sem sucesso, o que pode ser esse erro?

    terça-feira, 9 de junho de 2015 15:24
  • OK, 

    altere o sql para

    SELECT 0 as 'clienteId', 
          'Selecione uma opção...' as 'nome' 
    union all 
    (SELECT clienteID, nome FROM Cliente ORDER BY nome ASC)
    Não esqueça de Marcar Como Resposta!


    Natan


    terça-feira, 9 de junho de 2015 16:27
  • Agora funfou! Obrigado.
    terça-feira, 9 de junho de 2015 16:46