Inquiridor
Sugestões para um problema com o preenchimento de um datagridview

Pergunta
-
Olá galera boa tarde, estou com o seguinte problema:
Tenho uma grid e ela está sendo preenchida pelo seguinte código:
private void FillGrid_DGV()
{
string id_midia;
DataTable midia = new DataTable();
SqlCommand import = CreateCommand("SELECT ID_Midia2 FROM TB_Item_locação WHERE ID_Venda2 = " + txt_venda.Text);
SqlDataAdapter adapt = new SqlDataAdapter(import);
adapt.Fill(midia);
id_midia = midia.Rows[RowNumber - 1]["ID_Midia2"].ToString();
try
{
DGV1.Rows.Clear();
tb_IL = new DataTable();
SqlCommand check = CreateCommand("SELECT a.Nome_Filme, b.Tipo, c.* FROM TB_Filme AS a, TB_Tipo_midia AS b, TB_Item_locação AS c WHERE a.ID_Filme1 = (SELECT ID_Filme4 FROM TB_Midia WHERE ID_Midia1 = "+ id_midia +") AND c.ID_Tipo3 = b.ID_Tipo1");// CÓDIGO DO CreateCommand ABAIXO
SqlDataAdapter adapter = new SqlDataAdapter(check);
adapter.Fill(tb_IL);
DGV1.Rows.Add();
if (tb_IL.Rows.Count > 0)
{
foreach (DataRow dr in tb_IL.Rows)
{
DGV1.Rows.Add(new object[] { dr["Nome_Filme"], dr["Tipo"], dr["ID_Midia2"], dr["Preço"], ((DateTime)dr["data_para_devolução"]).ToString("dd/MM/yyyy"), ((DateTime)dr["data_da_devolução"]).ToString("dd/MM/yyyy"), dr["Multa"], dr["ID_Item_locação1"]});
}
}
else
{
MessageBox.Show("Erro ao importar dados!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
DGV1.Rows.Clear();
}
}// CÓDIGO DO CREATECOMMAND
private SqlCommand CreateCommand(string Query)
{
return new SqlCommand(Query, Context);
}O problema está quando eu executo a aplicação pois uma messagebox aparece dizendo que o valor inserido na coluna Midia não é um valor adequado, verifiquei o valor está tudo certo, menos Midia que não está sendo mostrada no grid e está dando erro.
Alguma idéia?
Obrigado de já
Todas as Respostas
-
Olá,
Por favor, poste exatamente qual é a mensagem de erro que você está recebendo pra ficar mais fácil de te ajudar...
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
O erro é esse:
The following exception occurred in the DataGridView:
System.FormatException: DataGridViewComboBoxCell value is not valid.
To replace this default dialog please handle the DataError event.
Ele não me deixa passar o mouse sobre duas ComboBoxs da grid(Filme(nome do filme) e Tipo (tipo da midia:DVD, DVD-HD, Blue-reay) a terceira comobox Midia(o ID da midia filtrado pelas outras combobox) está funcionando normal) e já manda o erro mas agora ele está trazendo todos os dados, só não sei porque ele está acusando esse erro com as duas comboboxs, e se eu troco de linha no Grid ele também acusa o erro.
PS: se estiver faltando mais alguma coisa é só dizer.
- Editado Lubean quarta-feira, 16 de fevereiro de 2011 17:17 Falta de detalhes
-
Olá,
Como você criou / populou essa sua coluna que é um ComboBox? Via código? Via designer?
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
-
E como você está fazendo para setar a DataSource da sua ComboBoxColumn? Você precisa alimentar ela com dados vindos de algum lugar, senão não vai funcionar...
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
É assim que estou preenchendo as ComboBoxColumn:
// COMBOBOXCOLUMN FILME
private void Impor_filme()
{
tb_filme = new DataTable();
SqlCommand Import = CreateCommand("SELECT * FROM TB_Filme");
SqlDataAdapter adapter = new SqlDataAdapter(Import);
adapter.Fill(tb_filme);
DGV1.Rows.Add();
column_filme.DataSource = tb_filme;
column_filme.DisplayMember = "Nome_Filme";
column_filme.ValueMember = "ID_Filme1";
}// COMBOBOXCOLUMN TIPO
private void Import_Tipo()
{
DataTable TB_tipo = new DataTable();
SqlCommand import = CreateCommand("SELECT * FROM TB_Tipo_midia");
SqlDataAdapter adapter = new SqlDataAdapter(import);
adapter.Fill(TB_tipo);
column_tipo.DataSource = TB_tipo;
column_tipo.DisplayMember = "Tipo";
column_tipo.ValueMember = "ID_Tipo1";
}//COMBOBOXCOLUMN MIDIA
private void Import_midia()
{
tb_midia = new DataTable();
SqlCommand import = CreateCommand("SELECT ID_Midia1 FROM TB_Midia WHERE ID_Filme4 = "+ DGV1.Rows[RowNumber -1].Cells[0].Value +" AND ID_Tipo2 = "+ DGV1.Rows[RowNumber-1].Cells[1].Value +" AND ID_Midia_status2 = " + txt_status);
SqlDataAdapter Adapter = new SqlDataAdapter(import);
Adapter.Fill(tb_midia);
column_id_midia.DataSource = tb_midia;
column_id_midia.DisplayMember = "ID_Midia1";
column_id_midia.ValueMember = "ID_Midia1";
}OBS: Onde DGV1 é o meu DataGridView, txt_status é um valor que pego de um select feito na tabela TB_Midia_status. O Import_midia() é chamado dentro do DataGridView_CellValueChanged, onde filtro o ID da midia de acordo com o ID do filme e o ID do tipo da midia(ou ID do tipo).