2016-07-18 2 views
0

Прежде всего извините, потому что я очень новичок в программировании, еще больше в C#. У меня есть серьезная проблема в том, как я атакую ​​эту проблему и как ее решить с помощью моих возможностей. У меня есть база данных, где я хочу извлечь некоторые данные через SQL-запрос, и я хочу представить его в группе кнопок, каждая из которых имеет данные об извлечении. Я бы хотел, чтобы эта кнопка была динамически создана, но из-за моего невежества я собираюсь по кругу. Я читал много вещей о DataGridViews и так, но у меня нет реалистичного способа сделать это (реалистично для меня, конечно).Создание динамического объекта в форме из datatable C#

Что я достиг, это создать код, который может читать эту БД и помещать данные в datatable, как только у меня есть, я полагал, что могу использовать это как промежуточный шаг для создания формы в VS, где я могу создать объекты, читающие этот тип данных, создавая кнопку, содержащую внутреннюю информацию (и, возможно, показывающую ее через datatiptool или что-то еще), по одному на «поле» в datatable и показывающую «как» данные, но с кнопками, которые будут взаимодействовать.

Итак, мой код для создания datatable works и у меня есть таблица из 8 x 12 -> 96 позиций, но как я могу это прочитать и создавать кнопки в виде «сетки» кнопок?

Любая помощь или советы будут очень признательны, Спасибо заранее :)

+0

Не ясно, что вы пытаетесь сделать. Что будет содержать базу данных в качестве данных? Что вы представляете с помощью кнопок? Постоянна ли 8 * 12, а данные содержат титры для кнопок? Если это так, вы просто поместите 8 * 12 кнопок в форму и установите их свойство Text из данных (только чтение и установка текстовой части является динамической). –

+0

Спасибо за комментарии. Данные были бы простыми строками, которые я в своем коде добавлял в каждый отдельный «ящик» для datatable. Хорошо, учитывая мой knoledge, я думаю о том, чтобы делать это как постоянный, но я знаю, что было бы лучше быть адаптируемым кодом независимо от размера сетки ... Я собираюсь попробовать «duDE», избегая создания моего datatable в середине. Возможно, я могу использовать некоторые из них, смешивая его, чтобы создать сетку кнопок вместо моей таблицы ... – Juano

+0

Если это так динамично, то лучше использовать сетку. А также почему вы создаете кнопки управления? Вместо этого вы можете кодировать событие CellClick в сетке. При таком подходе ваш код будет намного проще (в противном случае вам также следует подумать, что вы кодируете событие Click отдельно для каждой кнопки, что совсем не требуется). –

ответ

0

Ну, в основном это просто:

using(SqlConnection con = new SqlConnection("connection string")) 
{ 
    int nX = 0; 
    int nY = 0; 

    con.Open(); 

    using(SqlCommand cmd = new SqlCommand("SELECT * FROM SomeTable", connection)) 
    { 
     using (SqlDataReader reader = cmd.ExecuteReader()) 
     { 
      if (reader != null) 
      { 
       while (reader.Read()) 
       { 
        //create buttons 
        Button newButton = new Button(); 

        // now set the DB properties 
        newButton.Text = reader.GetString(0): // or whatever 

        // now calculate the X and Y coordinates 
        nX += 25; 
        newButton.Location = new Point(nX,nY); 

        // add new button 
        this.Controls.Add(newButton); 
       } 
      } 
     } // reader closed and disposed up here 

    } // command disposed here 

} //connection closed and disposed here 
+1

Спасибо! Я попытаюсь сделать это и смешаюсь с условием, которое я создал с созданием данных. Возможно, тогда я смогу создать сетку кнопок с тем же принципом стола, который, в конце концов, мне нужен. Я попытаюсь посмотреть, смогу ли я это сделать. Спасибо! – Juano

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