|
-
Jul 14th, 2011, 03:07 AM
#1
Thread Starter
Lively Member
About combo box
Good day Programmers,
I need help on my combo box..
Quick scenario:
For example
I have 2 combo box. First is Chocolate combox with two options (milk,strawberry) Second is Chocolate_filling with 2 options in each Chocolate combox options. For example. When i choose Milk, 2nd combox will show if (with nuts, or with raisins) and If i choose Strawberry, 2nd combox will show if (sweetened, or unsweetened).
Any idea, sample codes, suggestions, links, tutorials on how to do this?
It is like when you're registering, when you choose a "country", the next combo box will only show the "cities" inside that country.
Hope you get the idea.
Example: http://www.internet.com/Internetcom/...up-p1-v2?45007 >> the "State/Province" and "Country" Connection
Thanks,
Amada
-
Jul 14th, 2011, 04:32 AM
#2
Re: About combo box
In the following example I used the inner Datatable and LINQ to get the comboboxes values.
Normally, you query the external database, not the inner dataset, but the principle is the same:
vb Code:
Public Class Form1 Private myData As DataTable Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load GetData() ' This code assumes you have 2 combo boxes on the form ' Combobox1 and Combobox2 for 'Chocolate' and 'Topping' accordingly ' Querying the datatable for distinct values in the ' first column (first choice) Dim choice1 = _ From row As DataRow In myData.Rows.Cast(Of DataRow)() _ Select row.Item("Chocolate") Distinct.ToArray ComboBox1.DataSource = choice1 ComboBox1.DisplayMember = "Chocolate" End Sub ''' <summary> ''' This handler is fired when a user makes the first choice ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub ComboBox1_SelectedIndexChanged( _ ByVal sender As Object, ByVal e As System.EventArgs) _ Handles ComboBox1.SelectedIndexChanged Dim choice1 As String = ComboBox1.SelectedItem.ToString ' Querying for the second choices from the data table Dim choice2 = _ From row As DataRow In myData.Rows.Cast(Of DataRow)() _ Where row.Item("Chocolate").ToString = choice1 _ Select row.Item("Topping") Distinct.ToArray ComboBox2.DataSource = choice2 ComboBox2.DisplayMember = "Topping" End Sub ''' <summary> ''' This sub is for example only. Normally you'd need to get ''' your choices table from a database or some other data source ''' </summary> ''' <remarks></remarks> Private Sub GetData() myData = New DataTable("Choices") myData.Columns.Add(New DataColumn("Chocolate", GetType(System.String))) myData.Columns.Add(New DataColumn("Topping", GetType(System.String))) myData.Rows.Add(New String() {"milk", "nuts"}) myData.Rows.Add(New String() {"milk", "raisins"}) myData.Rows.Add(New String() {"strawberry", "sweetened"}) myData.Rows.Add(New String() {"strawberry", "unsweetened"}) End Sub End Class
Last edited by cicatrix; Jul 14th, 2011 at 04:39 AM.
-
Jul 14th, 2011, 09:05 PM
#3
Thread Starter
Lively Member
Re: About combo box
Thanks for your reply.
Here's my code.
Can you help me fix this? Well, as you can see, my code is too long. That's why I want something that is connected to database because. Ill be using this "Region","Province","City" combox connection in different modules where everything must be connected to the database.
Any idea? I just want something that is exactly the same as when you're registering in mails,games, etc where youre required to input your "Country" and "City".
Code:
Private Sub cregion_SelectedIndex(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cregion.SelectedIndexChanged
If cregion.SelectedIndex = 0 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Ilocos Norte", "Ilocos Sur", "La Union", "Pangasinan"})
cprovince.SelectedIndex = 0
If cprovince.SelectedIndex = 0 Then
ctown.Items.Clear()
ctown.Items.AddRange(New Object() {"Pinili"})
ctown.SelectedIndex = 0
ElseIf cprovince.SelectedIndex = 1 Then
cprovince.Items.Clear()
ctown.Items.AddRange(New Object() {"Cabugao", "Candon", "Cervantes", "Galimuyod"})
ctown.SelectedIndex = 0
ElseIf cprovince.SelectedIndex = 2 Then
cprovince.Items.Clear()
ctown.Items.AddRange(New Object() {"Agoo", "Aringay", "Balacan", "Bangar", "Bauang", "Caba", "San Juan", "Santol", "Sto. Tomas", "Tubao"})
ctown.SelectedIndex = 0
End If
ElseIf cregion.SelectedIndex = 1 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Batanes", "Cagayan", "Isabela", "Nueva Vizcaya", "Quirino"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 2 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Aurora", "Bataan", "Bulacan", "Nueva Ecija", "Pampanga", "Tarlac", "Zambales", "Angeles City"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 3 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Batangas", "Cavite", "Quezon", "Rizal", "Laguna", "Lucena City"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 4 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Marinduque", "Occidental Mindoro", "Oriental Mindoro", "Palawan", "Romblon"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 5 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Albay", "Camarines Norte", "Camarines Sur", "Catanduanes", "Masbate", "Sorsogon"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 6 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Aklan", "Antique", "Capiz", "Guimaras", "Iloilo", "Iloilo City", "Negros Occidental"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 7 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Bohol", "Cebu", "Cebu City", "Lapu-lapu City", "Mandaue City"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 8 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Biliran", "Western Samar", "Eastern Samar", "Leyte", "Northern Leyte", "Ormoc City", "Samar", "Southern Samar", "Tacloban City"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 9 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Isabela City", "Zamboanga", "Zamboanga del Norte", "Zamboanga del Sur", "Zamboanga Sibugay"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 10 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Bukidnon", "Cagayan de Oro City", "Camiguin", "Iligan City", "Lanao del Norte", "Misamis Occidental", "Misamis Oriental"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 11 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Compostela Valley", "Davao City", "Davao del Norte", "Davao del Sur", "Davao Oriental"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 12 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Cotabato", "Cotabato City", "Genaral Santos City", "Sarangani", "South Cotabato", "Sultan Kudarat"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 13 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Agusan del Norte", "Agusan del Sur", "Butuan City", "Dinagat Islands", "Surigao del Norte", "Surigao del Sur"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 14 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Basilan", "Lanao del Sur", "Maguindanao", "Sulu", "Tawi-Tawi"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 15 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Abra", "Apayao", "Baguio City", "Benguet", "Ifugao", "Kalinga", "Mountain Province"})
cprovince.SelectedIndex = 0
ElseIf cregion.SelectedIndex = 16 Then
cprovince.Items.Clear()
cprovince.Items.AddRange(New Object() {"Caloocan City", "Las Piñas City", "Makati City", "Malabon City", "Mandaluyong City", "Manila", "Marikina City", "Muntinlupa CIty", "Navotas City", "Parañaque City", "Pasay City", "Pasig City", "Pateros", "Quezon City", "San Juan City", "Taguig City", "Valenzuela City"})
cprovince.SelectedIndex = 0
End If
End Sub
-
Jul 14th, 2011, 11:53 PM
#4
Thread Starter
Lively Member
Re: About combo box
This is what I did:
Code:
Imports System.IO
Imports System.Data.SqlClient
Public Class Form1
Inherits System.Windows.Forms.Form
Dim sql_command As SqlCommand
Dim connectionString As String
Dim sql_connection As SqlConnection
Dim icount As Integer
Dim datareadersql As SqlDataReader
Dim sqlstring As String
Dim str As String
Dim sqlcom As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
'TODO: This line of code loads data into the 'Database1DataSet.tbl_town' table. You can move, or remove it, as needed.
Me.Tbl_townTableAdapter.Fill(Me.Database1DataSet.tbl_town)
connectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=Data Source=.\SQLEXPRESS;AttachDbFilename=C:*****DATABASE1.MDF;Integrated Security=True;User Instance=True;Integrated Security=True;User Instance=True"
sql_connection = New SqlConnection(connectionString)
sql_connection.Open()
Dim da As New SqlDataAdapter("select * from tbl_region ", sql_connection)
Dim ds As New DataSet()
da.Fill(ds)
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.DisplayMember = "Region_Name"
ComboBox1.ValueMember = "Region_id"
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim cn As New SqlConnection()
cn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=Data Source=.\SQLEXPRESS;AttachDbFilename=C:\*****DATABASE1.MDF;Integrated Security=True;User Instance=True;Integrated Security=True;User Instance=True"
cn.Open()
Dim da As New SqlDataAdapter("select Province_Name from tbl_province where Region_id='" + ComboBox1.SelectedValue.ToString() + "' ", cn)
Dim ds As New DataSet()
da.Fill(ds)
ComboBox2.DisplayMember = "Province_Name"
ComboBox2.ValueMember = "Province_id"
ComboBox2.DataSource = ds.Tables(0)
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
Dim cn As New SqlConnection()
cn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=Data Source=.\SQLEXPRESS;AttachDbFilename=C:\*****DATABASE1.MDF;Integrated Security=True;User Instance=True;Integrated Security=True;User Instance=True"
cn.Open()
Dim da As New SqlDataAdapter("select Town_Name from tbl_town where Province_id='" + ComboBox2.SelectedValue.ToString() + "' ", cn)
Dim ds As New DataSet()
da.Fill(ds)
ComboBox3.DisplayMember = "Town_Name"
ComboBox3.ValueMember = "Town_id"
ComboBox3.DataSource = ds.Tables(0)
End Sub
End Class
but. Im getting this error at da.Fill(ds). It says
Conversion failed when converting the varchar value 'System.Data.DataRowView' to data type int.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|