2012-01-03 76 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事件。

有沒有這方面的線索? 非常感謝你提前。

一直試圖解決這個近兩小時... ... :)

回答

1

嘗試將值設置到DataGridView,而不是組合框。這裏舉一個例子:

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

謝謝。我會試試看。但是,最終我放棄了在單元網格中使用組合框的技術。雖然性能不好(或者也許只是我的代碼不好):)謝謝 – swdev 2012-01-15 18:59:09

相關問題