[英]VB.Net 2010 - Retrieve MemberValue from ComboBox
我已经为此工作了三天,只是找不到一个简单的答案。 (确实很难做到这一点)。 但是现在我再也看不到森林的树木了。
我从SQL数据库中填充了一个组合框,效果很好,数据在Dataset Visualizer中显示良好。
组合列表称为cmbStateList
两个数据库字段DisplayMember“状态” ValueMember“ ID”
我想做的就是简单地从组合框中选择一个项目时返回ValueMember。 当我在cmbStateList_SelectedIndexChanged中使用“ cmbStateList.SelectedValue”时,返回的是项目在列表中的索引或位置,而不是数据的ValueMember(“ ID”)字段。
这是我正在使用的代码,非常希望有人可以解决这个简单的问题
SQL = "Select * from State"
Command = New SqlCommand(SQL, CNN)
DA.SelectCommand = Command
DA.Fill(DS, "State")
Me.cmbStateList.Items.Clear()
Me.cmbStateList.DataSource = DS.Tables("State")
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
Private Sub cmbStateList_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbStateList.SelectedIndexChanged
MsgBox(Me.cmbStateList.SelectedValue)
End Sub
预先感谢克里斯
如果您有大约100000条记录,这将非常缓慢:
Me.cmbStateList.DataSource = Nothing
Me.cmbStateList.DataSource = DS.Tables("State")
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
这很快,只需更改命令顺序即可:
Me.cmbStateList.DataSource = Nothing
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
Me.cmbStateList.DataSource = DS.Tables("State")
我不确定100%是否会有所作为,但是我们总是将Member设置在DataSource之前。 我会尝试将您的代码更改为以下内容:
Me.cmbStateList.DataSource = Nothing
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
Me.cmbStateList.DataSource = DS.Tables("State")
尝试这个:
绑定组合框
Me.cmbStateList.Items.Clear()
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
Me.cmbStateList.DataSource = DS.Tables("State")
Me.cmbStateList.SelectedIndex = 0
获取选择的值
要测试将其添加到按钮单击事件处理程序上。
MsgBox(Me.cmbStateList.SelectedValue.ToString())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.