Vb.net 如何从数据集中填充下拉列表?

Vb.net 如何从数据集中填充下拉列表?,vb.net,Vb.net,我试图用数据集中返回的存储过程的结果填充vb.net中的ASP下拉列表。我想知道是否有人知道填充下拉列表的vb.net代码 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load Dim connString As String = "Server=MYCOMPUTER\SQLEXPRESS;Database=scales;Trusted_Connection=True" Dim myCo

我试图用数据集中返回的存储过程的结果填充vb.net中的ASP下拉列表。我想知道是否有人知道填充下拉列表的vb.net代码

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

    Dim connString As String = "Server=MYCOMPUTER\SQLEXPRESS;Database=scales;Trusted_Connection=True"
    Dim myConn As New SqlConnection(connString)
    myConn.Open()
    Dim da As New SqlDataAdapter("select scaleName from scales", myConn)
    Dim dt As New DataTable
    da.Fill(dt)

    ComboBox1.DisplayMember = "scaleName"

    ComboBox1.DataSource = dt
    myConn.Close()

为了在DropDownList控件中显示数据,可以使用以下代码。要使用存储过程的结果,需要创建SELECT命令:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        Dim dt As New DataTable
        Dim connString As String = "Server=MYCOMPUTER\SQLEXPRESS;Database=scales;Trusted_Connection=True"
        Using myConn As New SqlConnection(connString)
            myConn.Open()
            Using cmd = myConn.CreateCommand()
                cmd.CommandType = CommandType.StoredProcedure
                cmd.CommandText = "dbo.uspMyStoredProc"
                cmd.Parameters.AddWithValue("@MyInputParam", 123)
                Using da As New SqlDataAdapter(cmd)
                    da.Fill(dt)
                End Using
            End Using
        End Using
        ComboBox1.DisplayMember = "scaleName"
        ComboBox1.DataSource = dt
        ComboBox1.DataBind()
    End If
    ' ...
End Sub
我已经调整了以下事项:

  • 通常,您只需要在初始请求时绑定数据。因此,开头的
    if
    语句检查
    IsPostBack
    属性
  • 为了可靠地关闭和处理连接和数据datapter,我使用语句添加了一些
    
    
  • 为了访问存储过程,我创建了一个SqlCommand,并将
    CommandType
    设置为
    StoredProcedure
    CommandText
    设置为存储过程的名称。在示例中,我还添加了一个名为
    MyInputParam
    的参数,该参数被发送到存储过程

到目前为止您尝试了什么?您是否有任何接近正常工作的代码?我可以很好地使用sql适配器,但我现在需要使用数据集。请用代码更新您的问题。点击问题下方的编辑链接进行编辑。感谢您的回复。我已经知道如何使用SqlAdapter(对不起,databind()被切断了)。我需要使用从我的业务层返回的存储过程在数据集中返回的结果。感谢您的回复。我知道如何使用SqlAdapter(对不起,databind()被切断了)。我需要使用从我的业务层中的存储过程返回的数据集(ds)返回的结果。@zoltar:我已经更新了示例,并包含了有关如何调用存储过程的详细信息。希望这有帮助。我无法在ASP.NET代码隐藏vb页面中使用Imports System.Data.SqlClient(您需要引用SQLadapter)。因此,我想我必须想出一个根本不使用SQL适配器对象的解决方案。@zoltar:如果无法导入System.Data.SqlClient,则将无法使用访问SQL Server所需的其他类(例如SqlConnection、SqlCommand等)。所以你需要先解决这个问题。您能检查您的项目是否有对System.Data.dll的引用吗?缺少对System.Data.dll的引用是我能想到的无法导入命名空间的唯一原因。谢谢Markus。如果我有.dll,我会在VisualStudio的什么地方检查它?
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        Dim dt As New DataTable
        Dim connString As String = "Server=MYCOMPUTER\SQLEXPRESS;Database=scales;Trusted_Connection=True"
        Using myConn As New SqlConnection(connString)
            myConn.Open()
            Using cmd = myConn.CreateCommand()
                cmd.CommandType = CommandType.StoredProcedure
                cmd.CommandText = "dbo.uspMyStoredProc"
                cmd.Parameters.AddWithValue("@MyInputParam", 123)
                Using da As New SqlDataAdapter(cmd)
                    da.Fill(dt)
                End Using
            End Using
        End Using
        ComboBox1.DisplayMember = "scaleName"
        ComboBox1.DataSource = dt
        ComboBox1.DataBind()
    End If
    ' ...
End Sub