Member 13084733 Ответов: 1

Как заполнить кнопки из таблицы данных


Привет
у меня есть форма с 50 кнопками
Мне нужно создать запрос, где я буду заполнять эти кнопки
сначала у меня будет возможно 10 кнопок с некоторым значением но в дальнейшем у меня будет больше
поэтому мой вопрос таков:
как проверить, сколько идентификаторов в таблице у меня есть, и заполнить столько кнопок, а остальные скрыть

Что я уже пробовал:

Я новичок в этом деле, поэтому понятия не имею, как его попробовать

Richard MacCutchan

50 пуговиц? Серьезно, вы ожидаете, что ваши пользователи попытаются выяснить, что будет делать каждый из них или комбинация более чем одного? Я предлагаю вам хорошенько рассмотреть ваш дизайн.

Member 13084733

50 кнопок это пример у меня будет меньше и каждая кнопка имеет свою функцию так что использовать ее будет нетрудно

Prifti Constantine

Что бы вы хотели поместить внутрь кнопки??? Что это за ценность?

Member 13084733

десятичное значение и ofc текст и изображение

Michael_Davies

Что бы вы ни пробовали, помочь вам невозможно, так как мы даже не знаем ни вашей схемы таблицы, ни того, как вы определяете, какие строки скрывать.

Вы только помечаете свой вопрос как C#, предполагая, что вы также используете SQL. Чтобы определить количество записей в таблице, вы можете просто выбрать COUNT (*) из <tablename>;

Member 13084733

Я не скрываю строки я скрываю кнопки если они не имеют значения

Michael_Davies

В этом случае установите все ваши кнопки скрытыми, а затем, когда вы заполняете кнопку, установите ее не скрытой.

Я делаю то же самое для проекта POS till, я не скрываю кнопки, просто устанавливаю их на enabled=false, так как это лучше выглядит на экране.

Member 13084733

да я хочу использовать его для того же самого но как установить кнопки у которых есть значения

Michael_Davies

Не уверен, как вы управляете своими кнопками, но при загрузке;

Зациклите все кнопки и установите атрибут на скрытый.

Циклическое чтение ваших данных и назначение кнопки и Установка атрибута в видимое.

Я использую VB и имею массив кнопок и назначаю каждый элемент одной из экранных кнопок, затем циклическое изменение массива текста и атрибутов влияет на кнопку и делает ее простой.

Member 13084733

у вас есть какой-нибудь пример, как это использовать?

Michael_Davies

Трудно так же, как не знать, как вы получаете данные своих кнопок, ни как C# ведет себя с массивом кнопок и назначением экранной кнопки.

У меня есть таблица с деталями кнопок: страница, buttonid, текст, PLU, задний и передний цвета.

Оператор имеет 7 кнопок страницы, которые выбирают, какая страница отображается на 50 кнопках.

Когда кнопка страницы выбрана, я инициализирую все кнопки в пустое состояние по умолчанию с помощью массива, а затем читаю записи с этой страницей из таблицы, устанавливая детали для кнопки в массиве, используя buttonid в качестве индекса.

Программа также позволяет им редактировать кнопки, устанавливая цвета, текст, изображение, если это необходимо, хотя опыт показывает, что лучше всего без этого, и PLU, хранящийся в кнопке .Тег так, чтобы при нажатии на него .Тег используется для поиска и обработки элемента.

Member 13084733

хорошо, у меня есть кнопки, которые показывают groupbox с кнопками внутри.
таблицы с названием столбцов, которые будут быть кнопку.текст цене, которые будут кнопку значения и изображения (не буду объяснять изображения он) в том, что группа
это будут два стола для напитков и еды я понятия не имею как даже начать кодировать это

Maciej Los

Что это за фреймворк: WinForm, WebForm, WPF?

Member 13084733

Winform

1 Ответов

Рейтинг:
1

Sheila Pontes

Привет,

Чтобы решить вашу проблему, я предлагаю использовать компонент dataGridView формы windows.
Вы будете динамически добавлять кнопку во время заполнения компонента.
Можно добавлять или нет, зависит от условности

private void FillData()
        {
            DataTable dt = new DataTable();
            //create column
            dt.Columns.Add("name", typeof(string));
            dt.Columns.Add("number", typeof(string));
            dt.Columns.Add("value", typeof(string));

            //fill data in datatable
            DataRow dr = dt.NewRow();
            dr["name"] = "Peter";
            dr["number"] = "1";
            dr["value"] = "0"; //not show button
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["name"] = "Mary";
            dr["number"] = "2";
            dr["value"] = "1"; //show button
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["name"] = "John";
            dr["number"] = "3";
            dr["value"] = "0"; //not show button
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["name"] = "Sarah";
            dr["number"] = "4";
            dr["value"] = "1"; // show button
            dt.Rows.Add(dr);

            //create column DataGridView
            dataGridView1.Columns.Add("name", "Name");
            dataGridView1.Columns.Add("number", "Number");
            dataGridView1.Columns.Add("button", "View");

            //create array to recive data
            string[] lst_dados = new string[2];

            foreach(DataRow dr1 in dt.Rows)
            {
                lst_dados[0] = dr1["name"].ToString();
                lst_dados[1] = dr1["number"].ToString();
                this.dataGridView1.Rows.Add(lst_dados);

                //Checks if button should be added in component
                if (dr1["value"].ToString() == "1")
                { 
                    //add button
                    DataGridViewButtonCell btn = new DataGridViewButtonCell();
                    btn.Value = "View";
                    btn.UseColumnTextForButtonValue = true;
                    this.dataGridView1.Rows[this.dataGridView1.Rows.Count - 2].Cells["button"] = btn;
                }
            }
        }
.

Чтобы нажать кнопку, используйте CellClick события.
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
   if (e.ColumnIndex == this.dataGridView1.Columns["button"].Index)
   {
     //Do something with your button.
   }
}


Member 13084733

Это здорово но я не могу использовать это для POS особенно если мой дизайн основан только на кнопках для сенсорных экранов