【问题标题】:Getting the value of the selected item in a Databound combobox获取数据绑定组合框中所选项目的值
【发布时间】:2018-02-07 22:10:01
【问题描述】:

我试图在 vb 中获取组合框的选定项的值以保存到数据库中,但它给了我以下错误

列类的整数值“System.Data.DataRowView”不正确 第1行

这是我的部分代码

Dim Query As String
Query = "INSERT INTO smartaccounts.basic_fee (class, term, amount) VALUES(?, ?, ?)"
command = New MySqlCommand(Query, MysqlConn)
command.Parameters.Add(New MySqlParameter("class", CType(CmbClass.SelectedItem.ToString, String)))
command.Parameters.Add(New MySqlParameter("term", CType(CmbTerm.SelectedItem.ToString, String)))
command.Parameters.Add(New MySqlParameter("amount", CType(TxtAmount.Text, String)))

我对 Vb 比较陌生,我想我一定是做错了什么 它可能是什么,我该如何解决?

这就是我将数据传递给组合框的方式

     Private Sub Fees_settings_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim adapter As New MySqlDataAdapter()
    Dim adapter1 As New MySqlDataAdapter
    Dim ds As New DataSet()
    Dim ds1 As New DataSet
    Dim i As Integer = 0
    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 name,label FROM classes "
    Dim sql1 As String = "SELECT name,label FROM term"
    Try
        MysqlConn.Open()
        command1 = New MySqlCommand(sql, MysqlConn)
        command2 = New MySqlCommand(sql1, MysqlConn)
        adapter.SelectCommand = command1
        adapter1.SelectCommand = command2
        adapter.Fill(ds)
        adapter1.Fill(ds1)
        adapter.Dispose()
        adapter1.Dispose()
        command1.Dispose()
        command2.Dispose()
        MysqlConn.Close()
        CmbClass.DataSource = ds.Tables(0)
        CmbClass.ValueMember = "label"
        CmbClass.DisplayMember = "name"
        CmbTerm.DataSource = ds1.Tables(0)
        CmbTerm.ValueMember = "label"
        CmbTerm.DisplayMember = "name"
    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try
End Sub

【问题讨论】:

  • 您没有显示或解释数据如何进入 CBO,但从错误来看,它似乎是数据绑定的。在这种情况下使用SelectedValue。将“金额”存储为字符串可能是个坏主意
  • 我已编辑添加
  • CmbClass 和 CmbTerm 是 ComboBox 对象吧?
  • 是的,它们是组合框

标签: mysql vb.net combobox


【解决方案1】:

.SelectedItem.ToString 替换为.SelectedValue.ToString
这是因为前者返回整个DataRow,而后者只返回绑定到选定项的选定值。

您的代码现在应该如下所示:

Dim Query As String
Query = "INSERT INTO smartaccounts.basic_fee (class, term, amount) VALUES(?, ?, ?)"
command = New MySqlCommand(Query, MysqlConn)
command.Parameters.Add(New MySqlParameter("class", CType(CmbClass.SelectedValue.ToString, String)))
command.Parameters.Add(New MySqlParameter("term", CType(CmbTerm.SelectedValue.ToString, String)))
command.Parameters.Add(New MySqlParameter("amount", CType(TxtAmount.Text, String)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 2014-02-06
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2020-06-28
    • 1970-01-01
    相关资源
    最近更新 更多