2012-01-03 12 views
0

私はDataGridViewを持っていて、既にそれにDataGridViewComboBoxColumnを追加することができました。これは、カスタムValueDescriptorクラスを使用してデータベースにStoredProcedureからデータを読み、これはそれのためのコードです:DataGridViewComboBoxColumnで項目をプログラムで選択することはできませんか?

Shared Sub fillComboBoxCellUsingSP(ByVal comboBox As DataGridViewComboBoxColumn, ByVal proc_name As String, ByVal param As Object(), ByVal firstitem As String) 
    Dim dt As New DataTable 
    Utils.executeSP(proc_name, param, dt) 
    If comboBox.DataSource IsNot Nothing Then 
    comboBox.DataSource = Nothing 
    End If 
    comboBox.Items.Clear() 

    Dim VDP_Array As New ArrayList 
    VDP_Array.Add(New ValueDescriptionPair(Nothing, firstitem)) 
    For Each row As DataRow In dt.Rows 
    VDP_Array.Add(New ValueDescriptionPair(row(0), row(1))) 
    Next 
    With comboBox 
    .DisplayMember = "Description" 
    .ValueMember = "Value" 
    .DataSource = VDP_Array 
    End With 
    dt.Dispose() 
End Sub 

それはデータ無事を表示することができますが、私はプログラム的にそれを選択することはできません、このメソッドを使用して:

Shared Sub selectInComboDataGrid(ByVal comboBox As DataGridViewComboBoxCell, ByVal value As String) 
    For Each o As ValueDescriptionPair In comboBox.Items 
    If o.Value IsNot Nothing AndAlso o.Value.ToString.Equals(value) Then 
     comboBox.Value = o 
     Exit For 
    End If 
    Next 
End Sub 

実際には、comboBox.Value = oという行は大丈夫です。しかし、コンボボックスのセルには値が表示されませんでした。ただ空です。場合によっては、DataErrorイベントが発生します。

これには手がかりがありますか? ありがとうございます。

はDataGridViewのにしていないコンボボックスに値を設定しようと、ほぼ2時間... :)

答えて

1

のためにこれを解決しようとされています。ここの例:

comboBox.DataGridView(comboBox.ColumnIndex, comboBox.RowIndex).Value = o 
+0

ありがとう。私はそれを試してみます。しかし、最終的には、コンボボックスをセルグリッドに使用するテクニックを落とします。パフォーマンスは良くありません(または多分それは良いことではなかった私のコードだった:))ありがとう – swdev

関連する問題