我可以查看文本框中的数据,但问题是,如果我将其更改为下拉以显示多个数据,它将提供一个空数据。
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发布于 2014-02-07 01:07:08
我假设您的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检索当前值,强制转换为string:
DirectCast(TextBox12.SelectedItem, String)边注-确保您的控件相应地命名。TextBox通常是为文本框保留的。下拉列表通常是MakerComboBox、MakerDropDown等。避免将控件命名为TextBox56和ComboBox188,因为这些数字对其他开发人员来说是毫无意义的。即使你是这个项目中唯一的一个,考虑我们帮助你。
https://stackoverflow.com/questions/21616891
复制相似问题