2015-02-07 3 views
1

У меня есть некоторые проблемы с динамической кнопкой в ​​C#. Я разработал приложение для Pos, и мне нужно создать группу продуктов, но когда я нажимаю кнопку группы, я должен показать сортировку продукта по названию группы продуктов.Динамическая кнопка C#

Это мой код:

private void Pos_Load(object sender, EventArgs e) 
{ 
    MySqlConnection conn = new MySqlConnection("server=localhost;user id=root;database=programmj;allowuservariables=True"); 
    conn.Open(); 

    string query = string.Format("SELECT * FROM priduct_group"); 

    MySqlCommand cmd = new MySqlCommand(query); 
    DataTable dt = new DataTable(); 
    DataSet ds = new DataSet(); 

    MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn); 
    adapter.Fill(dt); 

    ds.Tables.Add(dt); 

    int top = 0; 
    int left = 4; 

    foreach (DataRow dr in dt.Rows) 
    { 
      Button button = new Button(); 
      button.FlatStyle = FlatStyle.Flat; 
      button.BackColor = Color.Gold; 
      button.Text = dr[1].ToString(); 
      button.Font = new Font("Microsoft Sans Serif", 20, FontStyle.Bold); 
      button.Size = new Size(170, 85); 
      button.Left = left; 
      button.Top = top; 
      panel8.Controls.Add(button); // here 
      top += button.Height + 2; 
      button.Click += new System.EventHandler(Button_Click); 
    } 
} 

И это мой другой код для отображения продукта

private void Button_Click(object sender, EventArgs e) 
{ 
    MySqlConnection conn = new MySqlConnection("server=localhost;user id=root;database=programmj;allowuservariables=True"); 
    conn.Open(); 

    string query = string.Format("SELECT * FROM tblartikujt "); 
    MySqlCommand cmd = new MySqlCommand(query); 

    DataTable dt = new DataTable(); 
    DataSet ds = new DataSet(); 

    MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn); 
    adapter.Fill(dt); 

    ds.Tables.Add(dt); 

    int top = 0; 
    int left = 4; 

    foreach (DataRow dr in dt.Rows) 
    { 
      panel5.Dock = DockStyle.Right; 
      Button button = new Button(); 
      button.Padding = new Padding(20, 3, 20, 3); 
      button.FlatStyle = FlatStyle.Flat; 
      button.ForeColor = Color.White; 
      button.BackColor = Color.Green; 
      button.Text = dr[3].ToString(); 
      button.Text = dr[10].ToString(); 
      button.Font = new Font("Microsoft Sans Serif", 14, FontStyle.Bold); 
      button.Size = new Size(200, 85); 
      button.Left = left; 
      button.Top = top; 
      panel5.Controls.Add(button); // here 
      top += button.Height + 2; 
    } 
} 
+2

Вы говорите, что у вас есть проблема, но вы не объяснили, в чем проблема .... – rene

+0

Моя проблема заключается в том, что показ продукта продукта по названию продукта? У меня есть на столе продукт, а на тип продукта таблицы мне нужно показать продукт по типу продукции? ты понимаешь меня ? – Gimm

+0

ОК ... и какая часть вашего кода пытается это сделать, потому что я не вижу никакого кода сортировки в любом месте, только добавляя кнопки, я должен предположить, разные панели .... – rene

ответ

1

Ваш вопрос кажется довольно расплывчатым, но я попробую.

Вы спрашиваете, как распределить button по методу Pos_Load в отсортированном виде?
(. Поступая таким образом, то panel8 будет содержать кнопки, как вы отсортировали)

Если это то, что вы просите, вы можете просто написать SQL запрос, используя order by следующим образом:

SELECT 
     * 
FROM 
     product_group 
ORDER BY 
     product_name 
DESC 

С запросом, подобным выше, вы можете управлять своим DataRow, выбранным в порядке, что приведет к тому, что ваш button будет иметь отсортированную информацию о DataRow's.

+0

Если по какой-то странной причине вы не можете изменить запрос, вы можете использовать [Сортировка строк в таблице данных] (http://stackoverflow.com/a/9108171/3191303), чтобы помочь вам сортировать результаты, которые вы 've уже получил, но ответ YayCplusplus должен соответствовать тому, что звучит так, как ваши потребности. – AWinkle

Смежные вопросы