【问题标题】:How to add a new item to dropdownlist when no records are found in database在数据库中找不到记录时如何将新项目添加到下拉列表
【发布时间】:2019-05-16 17:22:30
【问题描述】:

当在 mysql 数据库中找不到任何项目时,如何向下拉列表添加替代项目。

这是我尝试过的

Sub getstudent()
        Try
            Dim val As String = System.Configuration.ConfigurationManager.ConnectionStrings("val").ConnectionString
            Using mycon As New MySqlConnection(val)
                Using ds As New DataTable
                    mycon.Open()
                    Dim SQL As String = "SELECT reg_no, name FROM tbl_students where class='" & Dpclass.SelectedItem.Text & "' and sub_class='" & Dpsub_class.SelectedItem.Text & "' and acad_session='" & acad_session.SelectedItem.Text & "'"
                    Dim myCommand As New MySqlCommand(SQL, mycon)
                    Dim myDA As New MySqlDataAdapter
                    myDA.SelectCommand = myCommand
                    myDA.Fill(ds)
                    mycon.Close()

                    Dpname.DataSource = ds
                    Dpname.DataTextField = "name"
                    Dpname.DataValueField = "reg_no"
                    Dpname.DataBind()
                    If Dpname.DataTextField < 1 Then
                        Dpname.Text = "Nothing Found"
                    End If
                    Dpname.Items.Insert(0, New ListItem("-select-", "0"))
                End Using
            End Using
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

我收到一个错误:从字符串“name”到类型“Double”的转换无效。

【问题讨论】:

  • 我不明白为什么人们坚持以这种方式使用 Try 块,你所做的只是掩盖更多可以用于调试的信息。至少使用MsgBox(ex.ToString) 如果DropDownList 类似于组合框(winforms),那么您应该设置文本字段、值字段,然后是数据源。如果要添加项目,则需要删除数据源或向当前数据表添加一行

标签: c# asp.net vb.net


【解决方案1】:

检查您的 DataTable 是否为空,用另一个值填充它:

If ds.Rows.Count = 0 Then
    Dpname.DataSource = new DataTable()
End If

【讨论】:

    【解决方案2】:

    我不能确定这是答案,因为我不知道您正在使用的表的结构,但从我看到的错误来看,您正在添加 0 作为字符串并且它期望双精度。尝试以下方法:

    Dpname.Items.Insert(0, New ListItem("-select-", 0))
    

    【讨论】:

      【解决方案3】:

      感谢 Mahdy Aslamy,我终于明白了

      If ds.rows.count  = 0 then
          Dpname.items.insert(0, New ListItem("No records Found", "0"))
      Else
          Dpname.items.insert(0, New ListItem("-Select-, "0""))
      End If
      

      【讨论】:

      • 如果您的解决方案是由于@MandyAslamy 的回答,请点击答案左侧的复选标记(勾号)接受该答案。
      猜你喜欢
      • 2015-08-15
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2016-11-24
      相关资源
      最近更新 更多