Как создать два поля со списком, которые зависят друг от друга в C#?
В моем приложении windows form есть два поля со списком. 1-й - это код бренда, а 2-й - название бренда. Я загружаю все данные в оба поля со списком при загрузке формы. Когда я выбираю один код бренда из списка кодов, соответствующее название бренда отображается в поле со списком (2-е). Все в порядке.
Но я хочу и наоборот, так как при выборе названия бренда код бренда должен отображаться в его поле со списком.
Я использую базу данных Microsoft access.
Как реализовать оба процесса на одном интерфейсе?
Что я уже пробовал:
//form load event private void Brands_Load(object sender, EventArgs e) { try { con.Open(); OleDbDataReader reader = null; OleDbCommand cmd = new OleDbCommand("Select * From Brand", con); reader = cmd.ExecuteReader(); while (reader.Read()) { cmbbCode.Items.Add(reader["BCODE"].ToString()); cmbbName.Items.Add(reader["BNAME"].ToString()); } con.Close(); } catch (Exception ex) { MessageBox.Show("error " + ex); } } //cmbBcode change value event private void cmbbCode_SelectedIndexChanged(object sender, EventArgs e) { try { String Bcode = cmbbCode.Text.ToString(); con.Open(); OleDbDataReader reader = null; OleDbCommand cmd = new OleDbCommand("Select BNAME From Brand Where BCODE = '" + Bcode + "'", con); reader = cmd.ExecuteReader(); while (reader.Read()) { String Name = reader["BNAME"].ToString(); cmbbName.Text = Name; } con.Close(); } catch (Exception ex) { MessageBox.Show("error " + ex); } } }
Richard MacCutchan
Просто добавьте тот же код, что и выше, но поменяв местами поля со списком.
Hashain Fernando
не могу, потому что когда я вызываю метод cmbbCode_SelectedIndexChanged (он вызывается, когда я выбираю значение из поля со списком код бренда), метод cmbbName_SelectedIndexChanged также вызывается.
И здесь есть исключение. (соединение не закрыто).
Hashain Fernando
Ниже произошло исключение.
Система.Исключение InvalidOperationException: соединение не было закрыто. Текущее состояние соединения открыто.
в System.Data.База поставщиков.DbConnectionInternal.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
в System.Data.База поставщиков.DbConnectionInternal.Содержащие вредоносные элементы(outerConnection объекта dbConnection, connectionFactory DbConnectionFactory )
в System.Data.Oledb для.Метод oledbconnection.Открыть()
в AutoSpa_Xpress.Brands.cmbbName_SelectedIndexChanged(отправитель объекта, EventArgs e) in C:\Users\hashainf\documents\visual studio 2010\Projects\AutoSpa Xpress\AutoSpa Xpress\Brands.cs:line 211