2012-10-29 122 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(); 

要調用它的綁定上下文,但我相信你需要調用它的網格本身,因此推動網格的變化到它的數據源。