KingCundy
KingCundy

Reputation: 75

DataGridViewComboBox Value is not valid

Background

I'm trying to set a column on my DGV up as a combobox. I've added all the columns to the gridview in the designer so all that is left is to bind them to the dataset.

The datatype of the Status column is varchar.

Question

However i keep getting a very unhelpful error message at run time. Am i doing something wrong?

DataGridViewComboBox Value is not valid.

The above error happens when setting the datasource of the dgv.

  dataGridView1.DataSource = JoblistDataSet.Tables["Joblist"];

My Code

DataGridViewComboBoxColumn Column = (DataGridViewComboBoxColumn)dataGridView1.Columns["Status"];
Column.DataPropertyName = "Status";

DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dataGridView1.Rows[0].Cells["Status"];

cbCell.Items.Add("New");
cbCell.Items.Add("Hold");
cbCell.Items.Add("Remove");

dataGridView1.DataSource = JoblistDataSet.Tables["Joblist"];

Upvotes: 0

Views: 129

Answers (1)

Ivan Stoev
Ivan Stoev

Reputation: 205829

I think the problem is that you are populating DataGridViewComboBoxCell.Items for row index 0 instead of DataGridViewComboBoxColumn.Items which applies for all rows (hope you noticed Cell vs Column).

Use something like this instead

var statusColumn = (DataGridViewComboBoxColumn)dataGridView1.Columns["Status"];
statusColumn.DataPropertyName = "Status";
statusColumn.Items.Add("New");
statusColumn.Items.Add("Hold");
statusColumn.Items.Add("Remove");
// ...

Upvotes: 1

Related Questions