如何在下拉列表中读取数据?

时间:2014-02-07 00:15:39

标签: vb.net

我可以在文本框中查看数据,但问题是,如果我将其更改为下拉以显示多个数据,则会提供空数据。

Private Sub textbox2_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.KeyPress

    Try

        cmd = New Odbc.OdbcCommand("SELECT maker FROM pcba_info.tblvendorpartnumber WHERE partnumber ='" & Trim(TextBox2.Text.TrimEnd()) & "'", con)
        dr = cmd.ExecuteReader

        If dr.Read Then

 TextBox55.Text = dr("maker").ToString ----------> return single data


TextBox12.SelectedIndex = dr("maker").ToString -----------> no data

            dgvcertifiedoperator.DataSource = dt
            dgvcertifiedoperator.Update()
            dgvcertifiedoperator.Refresh()

        End If


    Catch ex As Exception
        Debug.WriteLine("Plz check the parts" & ex.Message)
    End Try

End Sub

1 个答案:

答案 0 :(得分:0)

我假设您的TextBox12代表下拉列表。在这种情况下,将SelectedIndex分配给字符串是不正确的(只需考虑它一秒钟 - 索引不能是字符串,即AAA不是索引)。使用Option Strict On来防止此类错误。

默认情况下,VB.NET不会阻止你这样做,因为理论上一个字符串可以是一个整数,所以这个语句可以工作。但这并不意味着它会在100%的时间内发挥作用。 Option Strict验证类型转换以确保它始终有效,或者您的代码无法编译。

回到你的问题,一种方法是在列表中累积值,然后将该列表作为下拉列表的数据源,如下所示:

Dim lst As New List(Of String)
While dr.Read Then
  lst.Add(dr("maker").ToString)
End While

TextBox12.DataSource = lst

然后,您可以使用TextBox12.SelectedItem检索当前值,强制转换为字符串:

DirectCast(TextBox12.SelectedItem, String)

附注 - 确保您的控件相应命名。 TextBox通常是为文本框保留的。下拉菜单通常是MakerComboBoxMakerDropDown等。避免命名控件如TextBox56ComboBox188,因为这些数字对于其他开发者来说毫无意义。即使您是该项目中唯一的人,也请考虑我们帮助您。