Мне нужно получить productID из таблицы продуктов и передать его в текстовое поле. Но я хочу выбрать идентификатор продукта путем каскадного текста comboBox в качестве параметров запроса SQL.
Я пытался каскадировать комбинированные списки. Каскадирование работает нормально и отображает то, что мне нужно.
Я провел некоторые исследования каскадного комбинированного списка. Вот две полезные ссылки, которые я обнаружил.
каскадный комбинированный список в форме окна с использованием c #
заполнить текстовое поле во втором выделенном списке, изменено в каскадном комбинированном окне в форме окна с помощью c #
В обеих ссылках я не нашел ответа на свой вопрос.
Вот демонстрационная таблица
ProductID Category SubCategory Item
--------- ------------------------------ -------------------- ----------------
1 Pen Ballpoint Matadoor
2 Pencil HB Natraz
Я хочу получить значения ProductID, выбрав Category, SubCategory, Item, используя каскадные комбинированные списки.
Вот некоторый демонстрационный код, который заботится о каскадировании.
1-й комбинированный список:
public InventroyAddForm()
{
InitializeComponent();
string maincon = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
string query1 = "select * from Product";
string query2 = "select * from PartySpecificPrice";
SqlConnection con = new SqlConnection(maincon);
SqlCommand com = new SqlCommand(query1, con);
//con.Open();
SqlDataAdapter adp = new SqlDataAdapter(com);
DataTable dt = new DataTable();
adp.Fill(dt);
comboBox2.ValueMember = "Category";
comboBox2.DisplayMember = "Category";
comboBox2.DataSource = dt;
//con.Close();
comboBox3.Enabled = false;
comboBox4.Enabled = false;
}
2-й комбинированный список:
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if(comboBox2.SelectedValue.ToString() != null)
{
string maincon = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
string query1 = "select * from Product where Category=@Category";
SqlConnection con = new SqlConnection(maincon);
SqlCommand com1 = new SqlCommand(query1, con);
//con.Open();
com1.Parameters.AddWithValue("@Category",comboBox2.SelectedValue.ToString());
SqlDataAdapter adp1 = new SqlDataAdapter(com1);
DataTable dt1 = new DataTable();
adp1.Fill(dt1);
comboBox3.ValueMember = "Category";
comboBox3.DisplayMember = "SubCategory";
comboBox3.DataSource = dt1;
comboBox3.Enabled = true;
comboBox4.Enabled = false;
//con.Close();
}
}
3-й комбинированный список:
private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox3.SelectedValue.ToString() != null)
{
string maincon = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
string query2 = "select * from Product where Category=@Category";
SqlConnection con = new SqlConnection(maincon);
SqlCommand com2 = new SqlCommand(query2, con);
//con.Open();
com2.Parameters.AddWithValue("@Category", comboBox3.SelectedValue.ToString());
SqlDataAdapter adp2 = new SqlDataAdapter(com2);
DataTable dt2 = new DataTable();
adp2.Fill(dt2);
comboBox4.ValueMember = "Category";
comboBox4.DisplayMember = "Item";
comboBox4.DataSource = dt2;
comboBox3.Enabled = true;
comboBox4.Enabled = true;
//con.Close();
textBox2.Text = Convert.ToString(comboBox3.SelectedIndex);
}
}