2016-12-15 125 views
0

我正在構建一個具有DataGridView的Winforms應用程序。 DataGridView不綁定到數據源。我在我的網格上有一個comboboxColumn,我使用的是datatablec#獲取DatagridviewComboBoxCell的選定值

當我嘗試檢索comboBoxCell的selectedValue時,它會給出第一個匹配的值而不是確切的選定值。

Convert.ToString((datagridview1.Rows[i].Cells["columnName"] as DataGridViewComboBoxCell).Value) 

例如 組合框數據表是

 
DisplayMember ValueMember 
Orange  1111 
Apple   2222 
Banana  3333 
Apple   4444 
Guava   5555 

現在,如果我選擇蘋果ID爲4444,上述代碼獲取蘋果2222

我嘗試執行下面給出的步驟鏈接,但這是給索引,而不是價值。

https://stackoverflow.com/a/30157754/3619679

+0

如果你只是調用'DataGridView1.Rows [i] .Cells [「columnName」] .'值,但你的代碼看起來也不錯。只是爲了測試。我一直在用我寫的。也許在這種情況下,它會工作。並確保你把'ValueMember'。 –

+0

是的,我試過了。但是,如果存在具有不同ValueMember ID的重複值,它會在comboxlist中給出第一個值,而不是實際選定的值。 – dsouzaleo

回答

0

我可以從下面的鏈接以幫助解決問題

https://stackoverflow.com/a/30157754/3619679

SelectedItem存儲選定ComboBox項的正確值。

private void datagridview1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
     { 
      if (cmbCombo != null) 
      { 
       DataRowView oDataRowView = cmbCombo.SelectedItem as DataRowView; 
       string sValue = string.Empty; 

       if (oDataRowView != null) 
       { 
        sValue = oDataRowView.Row["ValueMemberID"] as string; 
       } 
       datagridview1[e.ColumnIndex, e.RowIndex].Tag = sValue; 
      } 

     }