我正在按照教程将数据从数据库插入到组合框中,但即使 DisplayMember 正确显示,分配的 ValueMember 似乎对于所有数据都是相同的。
这就是我将数据添加到组合框的方式
Private Sub cmbStream_VisibleChanged(sender As Object, e As EventArgs) Handles cmbStream.VisibleChanged
If cmbStream.Visible = True Then
cmbStream.DataSource = GetStreamItems()
cmbStream.DisplayMember = "name"
cmbStream.ValueMember = "id"
End If
End Sub
获取数据后是这样的
Function GetStreamItems() As List(Of StreamItem)
Dim streamItems = New List(Of StreamItem)
Dim reader As MySqlDataReader
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server='" & My.Settings.MServer & "';user='" & My.Settings.MDbUser & "';password='" & My.Settings.MDbPass & "';database='" & My.Settings.MDb & "'"
Dim sql As String = "SELECT id, name FROM tbl_streams"
Dim Command As MySqlCommand
MysqlConn.Open()
Command = New MySqlCommand(sql, MysqlConn)
Command.CommandTimeout = 30
reader = Command.ExecuteReader()
If reader.HasRows = True Then
While reader.Read()
streamItems.Add(New StreamItem(reader("id"), reader("name")))
End While
End If
Return streamItems
End Function
这是 StreamItem 类
Public Class StreamItem
Public Sub New(ByVal id As Integer, ByVal name As String)
mID = id
mName = name
End Sub
Private mID As Integer
Public Property id() As Integer
Get
Return id
End Get
Set(ByVal value As Integer)
mID = value
End Set
End Property
Private mName As String
Public Property name() As String
Get
Return mName
End Get
Set(ByVal value As String)
mName = value
End Set
End Property
End Class
我在代码中可能做错了什么,使所有数据的 ValueMember 为零?
最佳答案
您没有使用正确的变量来获取。它应该是 mID,而不是 id。
Public Property id() As Integer
Get
Return mID
End Get
Set(ByVal value As Integer)
mID = value
End Set
End Property
在 VB.NET 中,函数/属性的名称也用作返回值的某种变量。这与执行 Return 123 相同
Function SomeFunc() As Integer
SomeFunc = 123
End Function
或者根据你的情况
Public Property id() As Integer
Get
id = mID
End Get
Set(ByVal value As Integer)
mID = value
End Set
End Property
由于你还没有设置id,所以默认值为0。无论如何,不要使用该功能,这很困惑。
关于mysql - 为什么 cmbStream.ValueMember = "id"对所有值显示零,而 cmbStream.DisplayMember = "name"显示正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50854936/