airport tiger
airport tiger

Reputation: 1

DataGridViewComboBoxColumn value change not changing RowState to modified

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;
            }

Upvotes: 0

Views: 1223

Answers (2)

UWSkeletor
UWSkeletor

Reputation: 941

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

grdPersonQuals.EndEdit();

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.

Upvotes: 1

George Dgebuadze
George Dgebuadze

Reputation: 111

You may set rowstate if it is unmodified

    foreach (DataRow row in dsPersonQuals.Tables[0].Rows)
        {
            row.SetAdded(); // or row.SetModified();
            object x = row.RowState;
        }

Upvotes: 0

Related Questions