I have added a lookup combobox to my datagridview. Any changed to an existing row or adding a new row changed the value in RowState on save to Modified or Added. except changing a value in the combobox. On save, the RowState remains as unmodified.
the code i use to add the combobox is.
DataGridViewComboBoxColumn cbQualification = new DataGridViewComboBoxColumn();
cbQualification.HeaderText = "Course Code";
DataSet myDataSet = GetData.GetCoursesData();
cbQualification.DataSource = myDataSet.Tables[0];
cbQualification.DisplayMember = "Code";
cbQualification.ValueMember = "ID";
cbQualification.DataPropertyName = "QualID";
grdPersonQuals.Columns.Insert (1,cbQualification);
the save event uses the code.
grdPersonQuals.BindingContext[grdPersonQuals.DataSource, grdPersonQuals.DataMember].EndCurrentEdit();
foreach (DataRow row in dsPersonQuals.Tables[0].Rows)
{
object x = row.RowState;
}
I'm guessing the focus is still in your combobox column when hitting your save button? I've always called the DataGridView's EndEdit method to trigger updating the datasource.
So in your save button event
You are calling it on the binding context, but I believe you need to call it on the grid itself so it pushes the changes in the grid down to it's datasource.
You may set rowstate if it is unmodified