简体   繁体   中英

How to add items to a comboBox in C# from two tables?

I'd really appreciate if someone could help me figure out how to fill two comboboxes data from two different tables. The code below doesn't seem to be working for me.

string command = "SELECT * FROM [Course]";
string command2 = "SELECT * FROM [Module]";
dbConnection db = new dbConnection();
SqlDataReader reader = db.commandExecute(command);
SqlDataReader reader2 = db.commandExecute(command2);

while (reader.Read())
{
    comboBox2.Items.Add(reader["CourseID"].ToString());
}
while (reader2.Read())
{
    comboBox1.Items.Add(reader["ModuleID"].ToString());
}

reader.Close();
reader2.Close();
db.connectionEnd();

Instead of using two queries you can try like this

string command = "SELECT * FROM [Course] UNION ALL SELECT * FROM [Module]";

If you have columns mismatch problem while joining query use NULL as Column1 for extra column

Eg-:

string command = "SELECT CUSTID AS ID FROM [Course] UNION ALL SELECT ModuleID AS ID FROM [Module]";
dbConnection db = new dbConnection();
SqlDataReader reader = db.commandExecute(command);

while (reader.Read())
{
    comboBox2.Items.Add(reader["ID"].ToString());
}
reader.Close();
db.connectionEnd();

Update

I thought that you are going to add two table values in same comboxbox that's why posted above code.

Can you try this code it worked for me

    SqlConnection con = new SqlConnection("Data Source=pcname;Initial Catalog=database;Persist Security Info=True;User ID=sa;Password=123");
    SqlCommand cmd = new SqlCommand("SELECT * FROM [Course]", con);
    SqlCommand cmd1 = new SqlCommand("SELECT * FROM [Module]", con);
    con.Open();
    SqlDataReader dr = cmd.ExecuteReader();
    if (dr.HasRows) 
    {
        while (dr.Read()) 
        {
            ComboBox1.Items.Add(dr(0).ToString);
        }
    } 
    dr.Close();

    SqlDataReader dr1 = cmd1.ExecuteReader;
    if (dr1.HasRows) 
    {
        while (dr1.Read) 
        {
            ComboBox2.Items.Add(dr1(0).ToString);
        }
    } 
     dr1.close();
     con.close();

Hope this help you

Change your code

while (reader2.Read())
        {
            comboBox1.Items.Add(reader["ModuleID"].ToString());


        }

with

while (reader2.Read())
            {
// Change here the name of reader

                comboBox1.Items.Add(reader2["ModuleID"].ToString());


            }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM