Я работаю над POS-приложением и пытаюсь загрузить квалификаторы для определенных пунктов меню в свою панель стека. Кнопки Dynami c работают нормально, однако, когда я нажимаю любую из кнопок, ни один из флажков Dynami c (с информацией об элементе квалификатора) не появляется.
void subs_button_click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
//isPressed = true;
using (SqlConnection con = new SqlConnection(ApplicationSetting.ConnectionString()))
{
using (SqlCommand cmd = new SqlCommand("usp_Orders_InsertNewOrder", con))
{
SqlConnection con2 = new SqlConnection("Data Source=<<DATASOURCE>>;Initial Catalog=food;Persist Security Info=True;User ID=<<USERID>>;Password=<<PASSWORD>>");
con2.Open();
SqlCommand cmd2 = new SqlCommand("Select ID, sub_name, price, quantity from sub_cat", con2);
SqlDataReader data = cmd2.ExecuteReader();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@OrderItem", btn.Content);
cmd.Parameters.AddWithValue("@price", btn.Tag);
//will need to add qualifiers
cmd.Parameters.AddWithValue("@qualifiers", 0);
cmd.Parameters.AddWithValue("@ID", 0);
con.Open();
var queryResult = cmd.ExecuteScalar(); int commit = 0;
if (queryResult != DBNull.Value)
{
commit = Convert.ToInt32(cmd.ExecuteScalar());
}
if (btn.Content == "Ham and Cheese")
{
SqlConnection con3 = new SqlConnection("Data Source=<<DATASOURCE>>;Initial Catalog=food;Persist Security Info=True;User ID=<<USERID>>;Password=<<PASSWORD>>");
con3.Open();
SqlCommand cmd3 = new SqlCommand("Select qual_name from qualifiers", con3);
SqlDataReader data1 = cmd3.ExecuteReader();
while (data1.Read())
{
//Dynamic checkboxes
CheckBox chk = new CheckBox();
chk.Content = data1.GetValue(1).ToString();
main.Children.Add(chk);
}
}
//int id = Convert.ToInt32(cmd.ExecuteScalar());
MessageBox.Show(btn.Content + " has been added to order", "Success", MessageBoxButton.OK);
}
}
}
Я ссылаюсь на subs_button_click
здесь: * На 1005 *
void button_click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
//if user pressed subs
if (btn.Name == "Subs")
{
Debug.WriteLine("button pressed");
SqlConnection con = new SqlConnection("Data Source=<<DATASOURCE>>;Initial Catalog=food;Persist Security Info=True;User ID=<<USERID>>;Password=<<PASSWORD>>");
con.Open();
SqlCommand cmd = new SqlCommand("Select ID, sub_name, price, quantity from sub_cat", con);
SqlDataReader data = cmd.ExecuteReader();
//for (int i = 1; i < 21; i++)
// {
while (data.Read())
{
Button b = new Button();
//b.Name = data.GetValue(1).ToString();
b.Content = data.GetValue(1).ToString();
b.Tag = data.GetValue(2);
//b.HorizontalAlignment = HorizontalAlignment.Left;
b.Width = 100;
b.Height = 100;
b.Margin = new Thickness(20, 0, 0, 20);
b.FontSize = 16;
b.FontFamily = new FontFamily("Gadugi");
b.Style = (Style)FindResource("RoundedButtonStyle");
b.Click += new RoutedEventHandler(subs_button_click);
//add buttons to the stack panel
main.Children.Add(b);
}
// }
con.Close();
}
}
и button_click
имеется ссылка в классе publi c. Согласно приложенному изображению, я хочу, чтобы флажки Dynami c появлялись на вкладке Qualifiers в моем окне. Я считаю, что мой код верен с точки зрения извлечения данных квалификатора из базы данных, однако он все еще не отображается. Я уверен, что ответ здесь довольно прост, заранее спасибо всем за ваше время и помощь. ВЫВОД ИЗ КОДА