Usuário com melhor resposta
Como preencher datagrid com displaymember e nao valuemember de combobox C#

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???
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_Funcionarioveja 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
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);
- Editado Vinicius_kruz segunda-feira, 25 de abril de 2016 00:28
-
-
-
-
-
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; }
-
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...
-
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?
-
-
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_Funcionarioveja 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
-
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.
-