Как узнать, отмечен ли несколько флажков в форме или нет, и вставить значение в таблицу базы данных С#

Я хочу вставить значение в таблицу базы данных для каждого флажка (1, если он отмечен, и 0 не отмечен).

Я поместил все флажки в групповое поле.

Я надеюсь, что есть способ сделать это с помощью цикла, потому что у меня так много флажков.

SqlConnection conn = new SqlConnection(@"Data Source =.\SQLEXPRESS; Initial Catalog = sales_sys; 
Integrated Security = True");
SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;
cmd.CommandText = /* insert sql statement*/ ;

int x =0;

DataTable tbl = new DataTable();
tbl.Clear();
tbl.Columns.Add("value");

foreach (Control c in groupBox1.Controls)
{
    if (c is CheckBox)
    {
        CheckBox cb = (CheckBox)c;

        if (cb.Checked == false)
        { x = 0 ;}
        else
        { x = 1;}

       tbl.Rows.Add(1);
       int index = tbl.rows.count - 1;
       tbl.rows[index][0] = x;
    }
   
    conn.Open();
    tb.Load(cmd.ExecuteReader());
    conn.Close();

        

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

  • (первая строка с данными = второй столбец таблицы базы данных)

  • (вторая строка данных = третий столбец таблицы базы данных)

  • (третья строка данных = четвертый столбец таблицы базы данных)

и я удостоверяюсь, что строки таблицы равны количеству флажков

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

  • Если второй столбец в таблице равен 1, измените первый флажок на отмеченный
  • Если второй столбец в таблице равен 0, измените первый флажок на снятый

и так до конца столбцов.


person Ahmed Mohammed    schedule 31.08.2020    source источник
comment
вы используете checkedlistbox для своих флажков?   -  person Mohammed    schedule 01.09.2020
comment
Нет .. Я использую обычный checkbox в groubox .. Я могу изменить его на checklistbox, если это самый простой способ ..   -  person Ahmed Mohammed    schedule 01.09.2020


Ответы (1)


Вы можете создать checkedlistbox mycheckedlist, а затем использовать

private void savemychecks()
{
    DataTable tbl = new DataTable();
    tbl.Clear();
    tbl.Columns.Add("value");
    foreach (object item in mycheckedlist.Items)
    {
        if (mycheckedlist.CheckedItems.Contains(item))
        {
            tbl.Rows.Add("1");
        }
        else
        {
            tbl.Rows.Add("0");
        }
    }          
}

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

person Mohammed    schedule 01.09.2020
comment
Спасибо .. моя таблица базы данных содержит только столбец для каждого флажка - person Ahmed Mohammed; 01.09.2020
comment
@AhmedMohammed Вы используете ORM? как щеголеватый? - person Mohammed; 02.09.2020