Solved

Dynamic Combo Box

Posted on 2003-10-25
9
1,149 Views
Last Modified: 2009-07-29
Greetings to everyone,

I have 3 Combo Boxes on a C# form. All the data for those 3 ComboBox are popullated from an Oracle table. I want these3 ComboBox are dynamic linked to each other. That means, if I select another item in ComboBox1, the item in ComboBox2 will be changes to those associates with ComboBox1. Same to ComboBox3 and it depends on the item on ComboBox2.

I use the following code to fill ComboBox1.

      foreach (DataRow myRow in MyDataSet3.Tables[0].Rows)
                  {
                        campus.Items.Add(myRow["Region_code"]);
                  }

I know I need to modified the code for ComboBox1.TextChange. But need more details info.
Thanks in advance.

-Mark
0
Comment
Question by:mrong
  • 4
  • 3
9 Comments
 

Author Comment

by:mrong
ID: 9620691
Please ignore this question. I have found the solution by myself. I will post it by next Monday.

Thanks.
0
 
LVL 20

Accepted Solution

by:
TheAvenger earned 100 total points
ID: 9620692
OK, you have to make several things.

1. Create a dataset with 3 tables inside. In order to do this, the easiest way is to create a data adapter for each of your 3 tables, then select the 3 data adapters, right click and select generate dataset
2. When you have the dataset with the three tables, open it in design mode (it will be in your project) and add relations just like you would do this in the physical database - primary key and foreign key
3. On your combo boxes, select the following values in the properties window:
- Combo box 1: data source: the dataset.table1
- Combo box 2: data source: the dataset.table1.table2 (note that dataset.table2 will also be available but you MUST select dataset.TABLE1.TABLE2)
- Combo box 3: data source: the dataset.table1.table2.table3 - the same trick applies here

Now select values for the display member for every combo box to what exactly you want to show in the combo boxes (to see). You can also play with the value member to select which column from the table to give you the selected values.

If you have further questions, give it a try and ask.
0
 

Author Comment

by:mrong
ID: 9620693
Hi TheAvenger,

Thank you anyway:)

Mark
0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 

Author Comment

by:mrong
ID: 9626797
All you need to do is modified the code for SelectedIndexChanged. Here is my code, but you might find other better way to do it.

private void zone_SelectedIndexChanged(object sender, System.EventArgs e)
            {
                  bldg.Items.Clear();
                  
                  string sql4;
                  DataSet MyDataSet5 = new DataSet();  
                  sql4 = "SELECT DISTINCT BLDG";
                  sql4 += " FROM ROOT.AE_S_BLD_C";
                  sql4 += " WHERE REGION_CODE =('"+campus.Text+"') AND FAC_ID=('"+zone.Text+"')";
            sql4 += " ORDER BY BLDG";

                  OleDbConnection myConn4 = oleDbConnection1;  
                  OleDbCommand myComm4 = new OleDbCommand();
                  myComm4.Connection = myConn4;
                  myComm4.CommandText = sql4;

                  OleDbDataAdapter myAdap4 = new OleDbDataAdapter(myComm4);
                  myAdap4.Fill(MyDataSet5);
           
                  
                  
                  foreach (DataRow myRow in MyDataSet5.Tables[0].Rows)
                  {
                  
                        bldg.Items.Add(myRow["BLDG"]);

                  }

                  
                  myConn4.Close();
            }
0
 
LVL 20

Expert Comment

by:TheAvenger
ID: 9626840
The way I showed you is much more '.NET like' and is also much more efficient if I start playing with the combo boxes. It also needs only one connection to the database
0
 
LVL 20

Expert Comment

by:TheAvenger
ID: 9629209
I have supplied an answer that solves the problem the moment when mrong decided to stop it. I have also explained what is the added value and advantage of my solution over the one he presented. On my opinion the question should not be closed with PAQing as a good solution that can be used by the author was supplied.
0
 

Author Comment

by:mrong
ID: 9633396
I haven't got a chance to try TheAvenger's solution and I am working on something else. Please give me a couple of days to do so. I have no problem for giving points to the people who provide the best solution.

Thanks.
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

856 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