Создание поля со списком и динамическое заполнение элементов
У меня есть поле со списком (cboTable), которое содержит список таблиц базы данных. Когда я выбираю таблицу, она должна генерировать несколько полей со списком, содержащих имя столбцов таблицы. Если таблица содержит 4 столбца, то следует создать 4 поля со списком, имя каждого из которых будет использоваться по умолчанию.
Я хочу изменить текущие коды, чтобы я мог создавать поля со списком и динамически заполнять их элементы. Может ли кто-нибудь помочь мне сделать это? Спасибо.
private void cboTable_SelectedIndexChanged(object sender, EventArgs e) { TableID = cboTable.SelectedItem.ToString(); SqlCommand cmd; SqlDataReader dr; SqlConnection CS = new SqlConnection(); CS.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conel"].ConnectionString; cmd = new SqlCommand("select Column_name from Information_schema.columns where Table_name = @TableID"); CS.Open(); cmd.Connection = CS; cmd.Parameters.AddWithValue("@TableID", cboTable.SelectedItem.ToString()); dr = cmd.ExecuteReader(); cboON1.Items.Clear(); cboON2.Items.Clear(); cboON3.Items.Clear(); cboON4.Items.Clear(); while (dr.Read()) { cboON1.Items.Add(dr["Column_name"]); cboON2.Items.Add(dr["Column_name"]); cboON3.Items.Add(dr["Column_name"]); cboON4.Items.Add(dr["Column_name"]); } cboON1.SelectedIndex = 0; cboON2.SelectedIndex = 1; cboON3.SelectedIndex = 2; cboON4.SelectedIndex = 3; CS.Close(); }
Что я уже пробовал:
Я создал следующие коды, но он заполняет только имена столбцов в первом поле со списком, в то время как другие поля со списком пусты.
for (int i = 1; i < 5; i++) { ComboBox cb = new ComboBox(); cb.Location = new Point(475, 25 * i + 210); switch (i) { case 0: cb.Click += new EventHandler(ButtonClick2); break; } this.Controls.Add(cb); while (dr.Read()) { cb.Items.Add(dr["Column_name"]); } }
BillWoodruff
Если есть четыре таблицы данных, и вы выбираете одну из них ... и вы хотите, чтобы второй ComboBox показывал имена столбцов выбранной таблицы: почему вам нужно показывать четыре дополнительных ComboBox, а не один ?
Daniel Vero
Потому что мне нужно сравнить каждое поле со списком с другими полями со списком, которые показывают имя столбца из файла excel.
BillWoodruff
Мне все еще неясно, каковы ваши намерения здесь. Вы выбираете DataTable в одном ComboBox; затем вы создаете новые ComboBoxes для каждого столбца в выбранном DataTable. Вы добавляете имя столбца в новые выпадающие списки.
1. имеет ли каждая таблица данных одинаковое количество столбцов ? Всегда #4 ?
2. тогда что: что еще входит во вновь созданные комбо-боксы ?