Quantcast
Channel: Windows Forms Data Controls and Databinding forum
Viewing all articles
Browse latest Browse all 2535

Fill DataGridViewComboBoxColumn from DataGridViewColumn

$
0
0

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.



Viewing all articles
Browse latest Browse all 2535

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>