2016-12-15 42 views
0

私はDataGridViewを持つWinformsアプリケーションを構築しています。 DataGridViewはデータソースにバインドされていません。私はdatatableを使用して設定している私のグリッドにcomboboxColumnを持っています。c#DatagridviewComboBoxCellの選択値を取得

comboBoxCellのselectedValueを取得しようとすると、正確に選択された値の代わりに最初に一致した値が返されます。

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

は、例えば、 コンボボックスのデータテーブルは、私はID 4444でアップルを選択した場合、上記のコードは、私が実行しようとしました2222

でアップルを取得し、今

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

です次のリンクに記載されている手順ではなく、値の代わりにインデックスを指定しています。

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

     } 
関連する問題