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