Results 1 to 4 of 4

Thread: About combo box

  1. #1

    Thread Starter
    Lively Member anamada's Avatar
    Join Date
    Jun 2011
    Location
    Philippines, Makati
    Posts
    107

    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

  2. #2
    PowerPoster cicatrix's Avatar
    Join Date
    Dec 2009
    Location
    Moscow, Russia
    Posts
    3,654

    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:
    1. Public Class Form1
    2.  
    3.     Private myData As DataTable
    4.  
    5.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
    6.                                                                                                Handles Me.Load
    7.         GetData()
    8.  
    9.         ' This code assumes you have 2 combo boxes on the form
    10.         ' Combobox1 and Combobox2 for 'Chocolate' and 'Topping' accordingly
    11.  
    12.         ' Querying the datatable for distinct values in the
    13.         ' first column (first choice)
    14.         Dim choice1 = _
    15.                From row As DataRow In myData.Rows.Cast(Of DataRow)() _
    16.                Select row.Item("Chocolate") Distinct.ToArray
    17.  
    18.         ComboBox1.DataSource = choice1
    19.         ComboBox1.DisplayMember = "Chocolate"
    20.     End Sub
    21.  
    22.     ''' <summary>
    23.     ''' This handler is fired when a user makes the first choice
    24.     ''' </summary>
    25.     ''' <param name="sender"></param>
    26.     ''' <param name="e"></param>
    27.     ''' <remarks></remarks>
    28.     Private Sub ComboBox1_SelectedIndexChanged( _
    29.                ByVal sender As Object, ByVal e As System.EventArgs) _
    30.                Handles ComboBox1.SelectedIndexChanged
    31.         Dim choice1 As String = ComboBox1.SelectedItem.ToString
    32.  
    33.         ' Querying for the second choices from the data table
    34.         Dim choice2 = _
    35.               From row As DataRow In myData.Rows.Cast(Of DataRow)() _
    36.               Where row.Item("Chocolate").ToString = choice1 _
    37.               Select row.Item("Topping") Distinct.ToArray
    38.  
    39.         ComboBox2.DataSource = choice2
    40.         ComboBox2.DisplayMember = "Topping"
    41.     End Sub
    42.  
    43.  
    44.     ''' <summary>
    45.     ''' This sub is for example only. Normally you'd need to get
    46.     ''' your choices table from a database or some other data source
    47.     ''' </summary>
    48.     ''' <remarks></remarks>
    49.     Private Sub GetData()
    50.         myData = New DataTable("Choices")
    51.  
    52.         myData.Columns.Add(New DataColumn("Chocolate", GetType(System.String)))
    53.         myData.Columns.Add(New DataColumn("Topping", GetType(System.String)))
    54.  
    55.         myData.Rows.Add(New String() {"milk", "nuts"})
    56.         myData.Rows.Add(New String() {"milk", "raisins"})
    57.         myData.Rows.Add(New String() {"strawberry", "sweetened"})
    58.         myData.Rows.Add(New String() {"strawberry", "unsweetened"})
    59.     End Sub
    60.  
    61. End Class

  3. #3

    Thread Starter
    Lively Member anamada's Avatar
    Join Date
    Jun 2011
    Location
    Philippines, Makati
    Posts
    107

    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

  4. #4

    Thread Starter
    Lively Member anamada's Avatar
    Join Date
    Jun 2011
    Location
    Philippines, Makati
    Posts
    107

    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
  •  



Click Here to Expand Forum to Full Width