Solved

Filter a combobox based on the other Combobox

Posted on 2010-09-22
17
543 Views
Last Modified: 2012-05-10
Hello,

I have a windows form created in VB.Net with two combo box listing. I want the third combobox to filter the data based on the first two combo box
For example
First combo box: Category
Second Combo Box: Manufacturer
Third Combo Box: Model

On selection of the first two combobox, the third combo box should filter data.  

Third combo box data source is from a table that holds all the three data. but display member is Model


How can it be done. please assist. Thank you
0
Comment
Question by:angel7170
  • 11
  • 3
  • 3
17 Comments
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33736568
Hi
All comboboxes are Databound?
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33736828
ok try this...
Private Sub ComboBox1_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDownClosed

        Dim CustID As Integer = ComboBox1.SelectedValue

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        Dim bs As New BindingSource

        bs.DataSource = Me.Combo3DataSet

        bs.DataMember = "MyCombobox3TableName"



        bs.Filter = ("Key_Model=" & CustID)



        Dim col As New ComboBox

        col = Me.ComboBox3



        col.DataSource = bs

        col.DisplayMember = "Model"

        col.ValueMember = "Key_Model"    '>>>>>For Example

    End Sub

Open in new window

0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33736893
CompleteCode...Because we have to check also the DropDown Event
Private Sub ComboBox1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDown

        Try



            Dim CustID As Integer = Me.ComboBox1.SelectedValue

           





            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Dim bs As New BindingSource

             bs.DataSource = Me.Combo3DataSet

        bs.DataMember = "MyCombobox3TableName"



             bs.Filter = ("Key_Model=" & CustID)



            Dim col As New ComboBox

            col = Me.ComboBox3



            col.DataSource = bs

            col.DisplayMember = "Model"

        col.ValueMember = "Key_Model"    '>>>>>For Example

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''







        Catch ex As InvalidCastException



        Catch ex As Exception



            MsgBox(ex.ToString)



        End Try

    End Sub



    Private Sub ComboBox1_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.DropDownClosed

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        Dim bs As New BindingSource

        bs.DataSource = Me.Combo3DataSet

        bs.DataMember = "MyCombobox3TableName"



        bs.Filter = ("Key_Model=" & CustID)



        Dim col As New ComboBox

        col = Me.ComboBox3



        col.DataSource = bs

        col.DisplayMember = "Model"

        col.ValueMember = "Key_Model"    '>>>>>For Example

    End Sub

Open in new window

0
 
LVL 69

Accepted Solution

by:
Éric Moreau earned 500 total points
ID: 33737131
0
 

Author Comment

by:angel7170
ID: 33737169
I tried this code with modifications but doesn't seem working. I have also attached the sreenshot of what I see in the model combo box...
Please assist.


Private Sub cmb_Category_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_Category.DropDown

        Try

            Dim Category As String = cmb_Category.Text

            Dim Manu As String = cmb_Manufacturer.Text

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Dim bs As New BindingSource

            bs.DataSource = Me.TBLMODELBindingSource

            bs.DataMember = "MODEL"



            bs.Filter = ("MODEL like '" + Category + "'")



            Dim col As New ComboBox

            col = Me.cmb_Model



            col.DataSource = bs

            col.DisplayMember = "MODEL"

            'col.ValueMember = "MODEL"    '>>>>>For Example

        Catch ex As InvalidCastException



        Catch ex As Exception



            MsgBox(ex.ToString)



        End Try



    End Sub



    Private Sub cmb_Category_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_Category.DropDownClosed

        Dim Category As String = cmb_Category.Text

        Dim Manu As String = cmb_Manufacturer.Text

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        Dim bs As New BindingSource

        bs.DataSource = Me.TBLMODELBindingSource

        bs.DataMember = "MODEL"



        bs.Filter = ("MODEL like '" + Category + "'")



        Dim col As New ComboBox

        col = Me.cmb_Model



        col.DataSource = bs

        col.DisplayMember = "MODEL"

        'col.ValueMember = "MODEL"    '>>>>>For Example



    End Sub

Open in new window

test.doc
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33737237
just a note:
in your form load set :
Me.Combo1DataSet.EnforceConstraints = False  'Combo1DataSet is the name of your dataset in combobox1
Me.Combo3DataSet.EnforceConstraints = False  ''Combo2DataSet is the name of your dataset in combobox2

Also
"MyCombobox3TableName"  is the table or query ,the one you create the dataset which is bounded in combobox3


try it and you'll see ..it works fine...
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33737288
try to use selected value with the value member and amke the filter as my code.
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33737320
col.DisplayMember = "MODEL"
            'col.ValueMember = "MODEL"    ?? why the same?
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33737429
try this

Private Sub cmb_Category_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_Category.DropDown

        Try

            Dim Category As String = cmb_Category.SelectedValue

            Dim Manu As  = cmb_Manufacturer.Text

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Dim bs As New BindingSource

            bs.DataSource = Me.TBLMODELBindingSource

            bs.DataMember = "MODEL"



            bs.Filter = ("Model=" & Category) 



            Dim col As New ComboBox

            col = Me.cmb_Model



            col.DataSource = bs

            col.DisplayMember = "MODEL"

            'col.ValueMember = "MODEL"    '>>>>>For Example

        Catch ex As InvalidCastException



        Catch ex As Exception



            MsgBox(ex.ToString)



        End Try



    End Sub



    Private Sub cmb_Category_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_Category.DropDownClosed

        Dim Category As String = cmb_Category.Text

        Dim Manu As String = cmb_Manufacturer.SelectedValue

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        Dim bs As New BindingSource

        bs.DataSource = Me.TBLMODELBindingSource

        bs.DataMember = "MODEL"



       bs.Filter = ("Model=" & Category) 



        Dim col As New ComboBox

        col = Me.cmb_Model



        col.DataSource = bs

        col.DisplayMember = "MODEL"

        'col.ValueMember = "MODEL"    '>>>>>For Example



    End Sub

Open in new window

0
 

Author Comment

by:angel7170
ID: 33737566
There is no option for EnforseConstraints...My combo boxes are bound to Binding source.

Me.Combo1DataSet.EnforceConstraints = False  'Combo1DataSet is the name of your dataset in combobox1
Me.Combo3DataSet.EnforceConstraints = False  ''Combo2DataSet is the name of your dataset in combobox2
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 33737655
have you checked my article?
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33737755
did you try the alst post?
it works perfect on me.
@emoreau Could you please post a link?
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33737812
@angel7170
Can you post both DisplayMember and ValueMember from ComboBox1 and 3?
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 33737900
>>@emoreau Could you please post a link?
see post 33737131
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33737938
OOOOhhhh ... sorry ...i didn't Scroll up the page...
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33738056
Slightly Close...@emoreau my post Works (Slightly Close to yours)...But Your Article is Perfect..The only thing i have to do is to quit the Question...
@angel7170 read this article..there is more analysis..and you'll understand better what is going on ...!!thanks @emoreau i will keep the code too...!!
0
 

Author Comment

by:angel7170
ID: 33738310
ok, thank you ..both. I didn't get a chance to read through the article...but will do so.. thanks again.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Is there a way to programmatically restart a VB.Net application when an exception occurs? 8 47
Expando 4 46
AutoHotkey ActiveX Component Error 8 71
VS.net 2010 11 22
If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now