如何获取listboxvb.net的选择值字段



希望你做得好。

我有一个Listbox,我想分配主键,还有一个文本(例如学生表)。所以我写了这个代码。

    mySQLCmd.CommandText = "SELECT studentname, studentid FROM studentstable WHERE Year(DOB) = " + selectedYear
    Dim dt As New DataTable
    myReader = myCmd.ExecuteReader()
    dt.Load(myReader)
    Listbox1.datavaluefield = "studentid"
    Listbox1.datatextfield = "studentname"
    ListBox1.DataSource = dt
    ListBox1.DataBind()

列表框工作正常。SQL语句运行良好。我想在ListBox1_SelectedIndexChanged 上捕获selectedvalue和selectededitem属性

    1. Dim selectedPupil As String = ListBox1.SelectedItem.ToString()
    2. Dim selectedPupilID As Integer = ListBox1.SelectedValue

当我在列表框中选择某个内容时,selecteditem和selectedvalue属性都只返回学生名称,而不是学生id。所以我得到了这个错误。

    Error on Line2. Conversion from string "RichardCole" to type 'Integer' is not valid.

我不知道为什么?那么,我该找回学生的价值吗?我需要知道ID,因为名字不能用作PK。

非常感谢。

您在listbox1上设置了值和文本字段,但将数据绑定到listbox2。所以,除非我遗漏了什么,否则这似乎就是问题所在。

列表框1填充/绑定在哪里?

  mySQLCmd.CommandText = "SELECT studentname, studentid FROM studentstable WHERE Year(DOB) = " + selectedYear
Dim dt As New DataTable
myReader = myCmd.ExecuteReader()
dt.Load(myReader)
Listbox2.DataValueField = "studentid"    'it was ListBox1 now ListBox2
Listbox2.DataTextField = "studentname"   'it was ListBox1 now ListBox2
ListBox2.DataSource = dt
ListBox2.DataBind()

另一件事是使用ListBox2而不是

更新

  Dim selectedPupil As String = ListBox2.SelectedItem.Text.ToString()
Dim selectedPupilID As Integer = Ctype(ListBox2.SelectedValue, Integer) 'convert the value to integer

或者使变量成为字符串

  Dim selectedPupilID As String = ListBox2.SelectedValue

或者将以上所有ListBoxes更改为ListBox1,但不要以这种方式混合

相关内容

  • 没有找到相关文章

最新更新