无法以编程方式选择DataGridViewComboBoxColumn中的项目?

时间:2012-01-03 19:32:17

标签: vb.net datagridview

我有一个DataGridView,并且已经可以向它添加DataGridViewComboBoxColumn。它使用自定义ValueDescriptor类从数据库StoredProcedure读取数据,这是它的代码:

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事件。

这有什么线索吗? 非常感谢你。

已经尝试解决这个问题差不多两个小时了......:)

1 个答案:

答案 0 :(得分:1)

尝试将值设置为DataGridView而不是ComboBox。这是一个例子:

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