VB.NET (2010)
我正在尝试创建一个具有值和显示项的ComboBox。以下是相关的代码片段。我最初尝试使用datatable,结果与此完全相同:
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Try
cmbFromGroup.Items.Clear()
ItemList.Clear()
Item = New SelectionItem(KeyValue, DisplayValue)
'Link combobox and Item
ItemList.Add(Item)
cmbFromGroup.DataSource = ItemList
cmbFromGroup.DisplayMember = "Display"
cmbFromGroup.ValueMember = "Key"
Catch ex As Exception
Stop
End Try
End Sub
Private Sub cmbFromGroup_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbFromGroup.SelectedIndexChanged
Try
cmbFromMP3.Items.Clear()
Dim x As String = cmbFromGroup.SelectedValue
' <snip>
cmbFromMP3.SelectedIndex = 0
Catch ex As Exception
Stop
End Try
End Sub
Public Interface ISelectionItem
Property Key As String
Property Display As String
End Interface
Public Class SelectionItem
Implements ISelectionItem
Public Sub New(ByVal vKey As String, ByVal vDisplay As String)
_Key = vKey
_Display = vDisplay
End Sub
Public Property Key As String Implements ISelectionItem.Key
Public Property Display As String Implements ISelectionItem.Display
End Class我遇到的问题是cmbFromGroup.SelectedValue不包含所选项目的值。
我得到的是(来自观察) cmbFromGroup.SelectedValue {Player.SelectionItem}对象
我从cmbFromGroup.SelectedValue得到的唯一选项是Equals、GetHashCode、GetType、ReferenceEquals和ToString,这些选项都没有给出我所期望的ValueMember。
如何从所选项目中获取ValueMember?
发布于 2014-08-23 00:00:04
在组合体上使用.text:
Dim x As String = cmbFromGroup.text发布于 2013-08-08 20:32:08
我最终想出的解决方案是
cmbFromGroup.SelectedIndex = -1然后在cmbFromGroup_SelectedIndexChanged潜水艇中捕获它。
发布于 2015-07-01 19:28:06
我也有同样的问题,我设法使用了一个数据库(使用一个存储过程)。以下是相关的代码片段
'On Form load or Button Click (Depending on your application)
conString.Open() 'change conString to your connection string name
'Set Command for the stored procedure
Dim sqlComGetDirectorates As New SqlCommand
With sqlComGetDirectorates
.CommandType = CommandType.StoredProcedure
.Connection = conString
.CommandText = "ProcGetDirectorates" 'your stored procedure name
'if your stored procedure has parameters
'.Parameters.AddWithValue("@OfficerIdentity", txtPNum.Text)
End With
'Create Data Adapter (Using the stored procedure Command created earlier)
' Create a data table and Fill the Data adapter
Dim DatadptDirectorates As New SqlDataAdapter(sqlComGetDirectorates)
Dim dattabDirectorates As New DataTable
DatadptDirectorates.Fill(dattabDirectorates)
'Your Combobox
ComboDirectorate.DataSource = dattabDirectorates
ComboDirectorate.DisplayMember = "DirectorateName"
ComboDirectorate.ValueMember = "DirectorateCode"
'User will see DisplayMember in the Combobox‘关于组合框的SelectedIndexChanged
txtDirectorate.Text = ComboDirectorate.SelectedItem(1)
‘’注意: Combobox.SelectedItem将在内部从‘’存储过程‘’的结果中获取一行您需要通过在结果(从存储过程中)中指定combobox.selecteditem(??)‘’来获取所需的值。如果您有0- xx列,请为(??)
希望这能有所帮助。
https://stackoverflow.com/questions/18113052
复制相似问题