2015-06-16 72 views
-1

當用戶從ComboBox 1(我們與之合作的公司)選擇一個客戶端時,它應該填充來自ComboBox 2的用戶僅適用於該客戶端,它需要來自SQL Server中的特定數據庫。如何使用連接字符串(SQL Server,VB.NET)基於另一個ComboBox填充ComboBox

例子:

第一組合框與所有的客戶端,當用戶選擇一個客戶端,並與所有僅從該數據庫的用戶第二次組合框,我希望第二個組合框的用戶列表中根據變化客戶端從第一個ComboBox的列表中選擇,但包括一個連接字符串,通過SQL Server。

因此,如果我選擇說......谷歌在Combobox 1和Combobox 2中,我預計說...... Google的10位用戶。但是如果我改變了主意並在Combobox 1和Combobox 2中選擇了雅虎,我預計說......這次是來自雅虎的12位用戶。我使用

數據庫名稱:MYDATABASE

從這些數據庫中獲取用戶的基礎上,選擇我做,其中包含那些特定的用戶,而不是MYDATABASE擁有用戶以及:

  • GoogleQA(如果用戶選擇谷歌,只從這個數據庫中獲取用戶和運行時填充它)
  • YahooQA(如果用戶選擇雅虎,得到只有這個數據庫中的用戶,並在運行時填充它)

我VB.Net代碼:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("conStr").ConnectionString) 
     Dim cmd As New SqlCommand("Select * from CLIENTS", con) 
     con.Open() 
     Dim dt As New DataTable 
     dt.Load(cmd.ExecuteReader()) 
     con.Close() 
     cboClient.DataSource = dt 
     cboClient.DisplayMember = "CLIENT_NAME" 
     cboClient.ValueMember = "ID" 

     rtfMessage.Tag = "Enter your message here" 
     rtfMessage.Text = CStr(rtfMessage.Tag) 

我可以把我的組合框代碼怎麼弄的什麼,我希望發生的最終目標:

Private Sub cboUser_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboUser.SelectedValueChanged 
--What do I put here? 
    End Sub 

Private Sub cboClient_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboClient.SelectedIndexChanged 
     Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("conStr2").ConnectionString) 
     Dim cmd As New SqlCommand("Select * from USERS", con) 
     con.Open() 
     Dim dt As New DataTable 
     dt.Load(cmd.ExecuteReader()) 
     con.Close() 
     cboClient.DataSource = dt 
     cboClient.DisplayMember = "NetworkID" 
     cboClient.ValueMember = "ID" 
     cboClient.Text = "" 
     If cboClient.SelectedItem.Text = "Sunoco" Then 
      cboUser.Items.Add("NetworkID") 
     End If 
    End Sub 

可能性:在客戶端的變化組合框功能(cboClient_SelectedValueChanged)

1.) Change the database connection 
2.) Query the proper user data from the correct database 
3.) populate the user combo box with that user data 
+0

所以每次無論是組合框的變化,你想從你的表中獲取數據?另外你是什麼意思,但「包括連接字符串...」?你想把它包括在內?我想你應該試着描述一下你想要做得更清楚些。 – Feign

+0

組合框1(客戶端)更改時,它應該僅顯示來自該特定數據庫的用戶。就像我在運行它時填充大約6條記錄的客戶端的連接字符串一樣,如果我選擇該客戶端,那麼Combobox 2應該列出來自我選擇的客戶端(僅限於該數據庫)中的所有用戶。 – Dave

+0

您可以看到我爲客戶端設置了SQL變量,但我也想爲用戶這樣做,但要從該數據庫(或我在UI上選擇的客戶端)獲取數據。 – Dave

回答

0

你只是做了你所做的用戶部分中的if語句中的加載部分。

有點像:

`If cboClient.SelectedItem.Text = "Google" then 
    (code to populate the other combobox with google info) 
    End if` 


    `If cboClient.SelectedItem.Text = "Yahoo" then 
     dim sql as string = "Select firstName+ " " +lastname as empName from 
     Yahoo table" 
     dim cmd as sqladapter(sql, con) 
     dim dt as datatable 
     cmd.fill(dt) 
     cboUsers.datasource = dt 
     cboUsers.Datatextfield = "empName" 
     cboUsers.Datavaluefield = "empName" 
     cboUsers.DataBind() 
    End if 


     Dim sql2 As String = "Select EQPnumber, EQPdesc from CREW_LINEUP_ACTIVE_EQUIPMENT" 
     Dim activeEQPadt As New SqlDataAdapter(sql2, IPMS.Settings.conn) 
     activeEQPadt.Fill(activeDT) 
     ActiveEQPLstBx.DataSource = activeDT 
     ActiveEQPLstBx.DataTextField = "EQPdesc" 
     ActiveEQPLstBx.DataValueField = "EQPnumber" 
     ActiveEQPLstBx.DataBind() 
+0

你可以讓這個更具可讀性,並可能擴大你的答案?我將不勝感激。 – Dave

+0

在你的cboClients_selectedIndexChanged子程序中,'if cboClient.SelectedItem.Text =「Google」然後(這是你的代碼用谷歌用戶填充用戶cboBox,它應該類似於你最初如何填充客戶端框)結束if''if cbo .client.selecteditem.text =「雅虎」然後(代碼來填充客戶端框)如果' –

+0

「代碼結束其他組合框與雅虎信息」 什麼是正確的代碼來寫,如果我選擇雅虎和獲得用戶來自YahooQA?就像我在裏面有測試數據的tblyahoo一樣。 – Dave

相關問題