DataGridViewComboBoxColumn value change not changi

2019-09-05 13:57发布

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

2条回答
女痞
2楼-- · 2019-09-05 13:59

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.

查看更多
叼着烟拽天下
3楼-- · 2019-09-05 14:18

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;
        }
查看更多
登录 后发表回答