2012-10-29 79 views
0

我已经添加了一个查找组合框到我的datagridview。任何更改为现有行或添加新行都会将RowState中的值更改为保存到已修改或已添加。除了更改组合框中的值。保存时,RowState保持不变。DataGridViewComboBoxColumn值更改不变RowState更改

我用来添加组合框的代码是。

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

保存事件使用代码。

grdPersonQuals.BindingContext[grdPersonQuals.DataSource, grdPersonQuals.DataMember].EndCurrentEdit(); 
      foreach (DataRow row in dsPersonQuals.Tables[0].Rows) 
      { 
       object x = row.RowState; 
      } 

回答

0

你可以设置的RowState如果未修改

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

我不想设置它,我想看看值行在保存前是否已经更改。 –

1

我猜测的焦点仍然在你的组合框柱打你的保存按钮时?我总是调用DataGridView的EndEdit方法来触发更新数据源。

所以你保存按钮事件

grdPersonQuals.EndEdit(); 

要调用它的绑定上下文,但我相信你需要调用它的网格本身,因此推动网格的变化到它的数据源。