首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以下拉方式读取数据?

如何以下拉方式读取数据?
EN

Stack Overflow用户
提问于 2014-02-07 00:15:39
回答 1查看 79关注 0票数 0

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-07 01:07:08

我假设您的TextBox12表示下拉列表。在这种情况下,将SelectedIndex分配给字符串是不正确的(请考虑一下--索引不能是字符串,也就是说,AAA不是索引)。使用Option Strict On可防止此类错误。

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

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

代码语言:javascript
复制
Dim lst As New List(Of String)
While dr.Read Then
  lst.Add(dr("maker").ToString)
End While

TextBox12.DataSource = lst

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

代码语言:javascript
复制
DirectCast(TextBox12.SelectedItem, String)

边注-确保您的控件相应地命名。TextBox通常是为文本框保留的。下拉列表通常是MakerComboBoxMakerDropDown等。避免将控件命名为TextBox56ComboBox188,因为这些数字对其他开发人员来说是毫无意义的。即使你是这个项目中唯一的一个,考虑我们帮助你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21616891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档