none
Como preencher datagrid com displaymember e nao valuemember de combobox C# RRS feed

  • Pergunta

  • Ola a todos de novo, estou tendo problemas ao preencher datagrid com campos de combobox, quando preencho o datagrid, a coluna de origem combobox aparece valores e nao textos ou melhor, eu gostaria que chamasse o displaymember nao valuemember. agradecia a vossa ajuda, ai esta meu codigo que preenche o datagrid

                    SqlConnection coneccao = new SqlConnection("Minha coneccao");
                    coneccao.Open();
                    SqlDataAdapter dadosAdapter = new SqlDataAdapter("select Num_Funcionario as 'Numero Funcionario', Cod_Seccao as 'Seccao', Nome_Funcionario as 'Nome Funcionario', Cod_Tipo_Funcionario as 'Tipo Funcionario', Funcao_Cargo as 'Funcao/Cargo', Descricao_Comentario as 'Comentario' from Funcionario", coneccao);

                    DataTable tabelaDados = new DataTable();
                    dadosAdapter.Fill(tabelaDados);
                    BindingSource bsource = new BindingSource();

                    bsource.DataSource = tabelaDados;
                    dataGridFuncionario.DataSource = bsource;
                    dadosAdapter.Update(tabelaDados);

    Como faco isso???

    domingo, 24 de abril de 2016 20:31

Respostas

  • Ola ja resolvi, simplesmente alterei o meu select ao preencher o datagrid

    select Num_Funcionario as 'Número Funcionário', Nome_Seccao as 'Secção', Nome_Funcionario as 'Nome Funcionário', Nome_Tipo_Funcionario as 'Tipo Funcionário', Funcao_Cargo as 'Função/Cargo', Descricao_Comentario as 'Comentário'
    from Funcionario, Tipo_Funcionario, Seccao
    where Funcionario.Cod_Seccao = Seccao.Cod_Seccao and
    Funcionario.Cod_Tipo_Funcionario = Tipo_Funcionario.Cod_Tipo_Funcionario

    veja que no select anterior eu buscava por Cod_Seccao e Cod_tipo_Funcionario, agora apenas busco os nomes e prontos, funcionou directinho

    • Marcado como Resposta JosefoSad terça-feira, 26 de abril de 2016 06:32
    terça-feira, 26 de abril de 2016 06:32

Todas as Respostas

  • Não havia entendido muito bem sua dúvida, mas acho que agora entendi. 

    Já tentou usar a cláusula where? ficaria assim:

     SqlDataAdapter dadosAdapter = new SqlDataAdapter("select Num_Funcionario as 'Numero Funcionario', Cod_Seccao as 'Seccao', Nome_Funcionario as 'Nome Funcionario', Cod_Tipo_Funcionario as 'Tipo Funcionario', Funcao_Cargo as 'Funcao/Cargo', Descricao_Comentario as 'Comentario' from Funcionario

    where Nome_Funcionario = '"+seuCombobox.text+"'  ", coneccao);


    segunda-feira, 25 de abril de 2016 00:10
  • Ola, tentei a pouco tempo com a clausula where, os registos nao sao preenchidos no datagrid, alguma alternativa?
    segunda-feira, 25 de abril de 2016 06:41
  • Da forma como se encontra, sem a cláusula where, está preenchendo o datagrid?
    segunda-feira, 25 de abril de 2016 12:06
  • Sim, mas com o valuemember do combobox que eh o ID, oque eu gostaria eh preencher o datagrid com o displaymember- Texto
    segunda-feira, 25 de abril de 2016 13:11
  • No seu código não cita o valuemember. De que forma você está fazendo para que ele seja reconhecido? Tem alguma coisa muito estranha aí porque era para aceitar com o texto que estiver no combo.
    segunda-feira, 25 de abril de 2016 16:17
  • Eu costumo preencher meus datagridview mais ou menos da seguinte forma:

    public void preencheDgv() { //cria o datatable DataTable DtOsAbertas = new DataTable(); DtOsAbertas.Columns.Add(new DataColumn("OS_ID")); DtOsAbertas.Columns.Add(new DataColumn("PES_ID")); DtOsAbertas.Columns.Add(new DataColumn("OS_DATA_ABERTURA")); DtOsAbertas.Columns.Add(new DataColumn("OS_ABERTA_FECHADA")); //pega os dados no banco de dados string sqlCmd = "select OS_ID,PES_ID,OS_DATA_ABERTURA,OS_ABERTA_FECHADA from

    OS where OS_ABERTA_FECHADA='"+ SEU_COMBOBOX.TEXT+ "'";

    DtOsAbertas = AcessoFB.sql_GetDados(sqlCmd); //passa os dados do datatable para o datagrid datagridview.DataSource = DtOsAbertas; }


    segunda-feira, 25 de abril de 2016 16:31
  • Obrigado Vinicius,

    Eu preencho aqui os combobox

                string connetionString = null;
                SqlConnection connection;
                SqlCommand command;
                SqlDataAdapter adapter = new SqlDataAdapter();
                DataSet ds = new DataSet();
                int i = 0;
                string sqlfirst = null;
                string sqlSecond = null;
                connetionString = ("\\Minha coneccao");
                sqlfirst = "select Cod_Tipo_Funcionario,Nome_Tipo_Funcionario from Tipo_Funcionario";
                sqlSecond = "select Cod_Seccao,Nome_Seccao from Seccao";
                connection = new SqlConnection(connetionString);
                try
                {
                    connection.Open();

                    command = new SqlCommand(sqlfirst, connection);
                    adapter.SelectCommand = command;
                    adapter.Fill(ds, "Tipo_Funcionario");

                    adapter.SelectCommand.CommandText = sqlSecond;
                    adapter.Fill(ds, "Seccao");

                    adapter.Dispose();
                    command.Dispose();
                    connection.Close();

                    //Buscando dados da Primeira tabela
                    for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
                    {
                       cbbTipoFuncionario.DataSource = ds.Tables[0];
                       cbbTipoFuncionario.ValueMember = "Cod_Tipo_Funcionario";
                       cbbTipoFuncionario.DisplayMember = "Nome_Tipo_Funcionario";
                       
                    }
                    //Buscando dados da segunda tabela 
                    for (i = 0; i <= ds.Tables[1].Rows.Count - 1; i++)
                    {
                       cbbSeccao.DataSource = ds.Tables[1];
                       cbbSeccao.ValueMember = "Cod_Seccao";
                       cbbSeccao.DisplayMember = "Nome_Seccao";
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Não Pode abrir conecção ! ");
                }   
            }

    Entao aqui preencho o datagrid

     SqlConnection coneccao = new SqlConnection("Minha coneccao");
                    coneccao.Open();
                    SqlDataAdapter dadosAdapter = new SqlDataAdapter("select Num_Funcionario as 'Numero Funcionario', Cod_Seccao as 'Seccao', Nome_Funcionario as 'Nome Funcionario', Cod_Tipo_Funcionario as 'Tipo Funcionario', Funcao_Cargo as 'Funcao/Cargo', Descricao_Comentario as 'Comentario' from Funcionario", coneccao);

                    DataTable tabelaDados = new DataTable();
                    dadosAdapter.Fill(tabelaDados);
                    BindingSource bsource = new BindingSource();

                    bsource.DataSource = tabelaDados;
                    dataGridFuncionario.DataSource = bsource;
                    dadosAdapter.Update(tabelaDados);

    Algum lugar estou errado?? Por qualquer coisa...

    segunda-feira, 25 de abril de 2016 20:17
  • Amigo, realmente não consegui ver ainda uma ligação entre o preenchimento dos seus combobox e o seu datagrid. O que estou vendo no seu código é uma rotina que preenche os seus combobox e outra que preenche seu datagrid. Uma vez preenchidos, tanto os combobox quanto o datagrid, qual é a sua necessidade? Por exemplo, ao selecionar um ítem do combobox, os dados do datagrid se atualizariam, seria isso?
    segunda-feira, 25 de abril de 2016 22:37
  • Ola, minha necessidade é preencher o datagrid com o displaymember dos combobox, nao o IDs
    terça-feira, 26 de abril de 2016 05:12
  • Ola ja resolvi, simplesmente alterei o meu select ao preencher o datagrid

    select Num_Funcionario as 'Número Funcionário', Nome_Seccao as 'Secção', Nome_Funcionario as 'Nome Funcionário', Nome_Tipo_Funcionario as 'Tipo Funcionário', Funcao_Cargo as 'Função/Cargo', Descricao_Comentario as 'Comentário'
    from Funcionario, Tipo_Funcionario, Seccao
    where Funcionario.Cod_Seccao = Seccao.Cod_Seccao and
    Funcionario.Cod_Tipo_Funcionario = Tipo_Funcionario.Cod_Tipo_Funcionario

    veja que no select anterior eu buscava por Cod_Seccao e Cod_tipo_Funcionario, agora apenas busco os nomes e prontos, funcionou directinho

    • Marcado como Resposta JosefoSad terça-feira, 26 de abril de 2016 06:32
    terça-feira, 26 de abril de 2016 06:32
  • Que bom que você resolveu!! 

    Só que os dados que você está buscando, não estão vindo com base em nenhuma informação do combobox. Da forma como está, se você preencher o combobox ou não, não vai fazer a menor diferença porque os dados tanto do combobox quanto do datagrid são oriundos da tabela no banco de dados.

    Mas tudo bem, o importante é que você resolveu.

    terça-feira, 26 de abril de 2016 22:46
  • Obrigado pela ajuda
    quarta-feira, 27 de abril de 2016 12:23