Hello,
I'm trying to populate data from a database on a dataGridView, but I'm getting an error (System.FormatException dataGridViewComboBoxColumn is not valid) when I'm trying to assign the value of column TaskID to dataGridViewComboBoxColumn. After the error occurs, I get TaskID on comboBoxColumn instead of showing the TaskDescription. Here's my code:
public void fillGridViewComboColumn(SqlConnection conn, DataGridViewComboBoxColumn combo, String sproc, String code, String description)
{
using (conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd2 = new SqlCommand(sproc))
{
cmd2.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd2.Connection = conn;
using (SqlDataReader rdr2 = cmd2.ExecuteReader(CommandBehavior.CloseConnection))
{
DataTable dt2 = new DataTable();
dt2.Columns.Add(code, typeof(decimal));
dt2.Columns.Add(description, typeof(string));
while (rdr2.Read())
{
DataRow dr2 = dt2.NewRow();
dr2[0] = rdr2.GetInt32(rdr2.GetOrdinal(code));
dr2[1] = rdr2.GetString(rdr2.GetOrdinal(description));
dt2.Rows.Add(dr2);
}
rdr2.Close();
combo.DataSource = dt2;
combo.DisplayMember = description;
combo.ValueMember = code;
}
}
}
}
public void selectTasks()
{
using (conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("SELECT_TASKS", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@UserID", System.Environment.UserName));
//Fill The DataTable From Command
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
//Set It To Binding Navigator
tasksGridView.DataSource = dt;
DataGridViewComboBoxColumn taskCombo = new DataGridViewComboBoxColumn();
fillGridViewComboColumn(conn, taskCombo, "LOOKUP_TASKS", "TaskID", "TaskDescription");
tasksGridView.Columns.Add(taskCombo);
taskCombo.DataPropertyName = "TaskID";
conn.Close();
}
}Any suggestions?
Thank you in advance.