Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1159
  • Last Modified:

Dynamic Combo Box

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
mrong
Asked:
mrong
  • 4
  • 3
1 Solution
 
mrongAuthor Commented:
Please ignore this question. I have found the solution by myself. I will post it by next Monday.

Thanks.
0
 
TheAvengerCommented:
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
 
mrongAuthor Commented:
Hi TheAvenger,

Thank you anyway:)

Mark
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
mrongAuthor Commented:
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
 
TheAvengerCommented:
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
 
TheAvengerCommented:
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
 
mrongAuthor Commented:
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

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now