2014-03-28 40 views
1

我想用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() 
+1

到目前为止您尝试过什么?你有没有接近工作的代码? –

+0

我可以使用sql适配器,但我现在需要使用数据集。 – zoltar

+0

请用代码更新您的问题。点击问题下方的编辑链接即可。 –

回答

0

为了显示在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属性。
  • 为了可靠地关闭和部署连接和数据数据集,我添加了一些using语句。
  • 为了访问存储过程,我创建了一个SqlCommand并将CommandType设置为StoredProcedureCommandText被设置为存储过程的名称。在示例中,我还添加了一个名为MyInputParam的参数,该参数被发送到存储过程。
+0

感谢您的回复。我知道如何使用SqlAdapter(数据绑定()被切断,对不起)。我需要使用业务层中存储过程返回的数据集(ds)返回的结果。 – zoltar

+0

@zoltar:我已经更新了示例并提供了有关如何调用存储过程的详细信息。希望这可以帮助。 – Markus

+0

我无法在vb页面后面的ASP.NET代码中使用Imports System.Data.SqlClient(您需要引用SQLadapter)。所以我想我必须想出一个根本不使用SQL适配器对象的解决方案。 – zoltar

0
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
      IF Not IsPostback then 
       PopulateDropdown() 
      End IF 
End Sub 

Private Sub PopulateDropDown() 
     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 ScaleId, scaleName from scales", myConn) 
     Dim dt As New DataTable 
     da.Fill(dt) 

      Me.ComboBox1.DataTextField = "scaleName " 
      Me.ComboBox1.DataValueField = "ScaleId" 
      Me.ComboBox1.DataSource = dt 
      Me.ComboBox1.DataSourceID = String.Empty 
      Me.ComboBox1.DataBind() 

    myConn.Close() 
End Sub 
+0

感谢您的回复。我已经知道如何用SqlAdapter(数据绑定()被切断,对不起)。我需要使用从业务层返回的存储过程中的数据集中返回的结果。 – zoltar