2014-03-28 73 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