如何知道是不是选中了表单中的多个复选框并将值插入数据库表c#

Posted

技术标签:

【中文标题】如何知道是不是选中了表单中的多个复选框并将值插入数据库表c#【英文标题】:How to know if multiple checkbox in form is checked or not and insert the value in database table c#如何知道是否选中了表单中的多个复选框并将值插入数据库表c# 【发布时间】:2020-08-31 23:17:50 【问题描述】:

我想为每个复选框在数据库表中插入值(如果选中则为 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,则将第一个复选框更改为未选中

一直持续到列的末尾。

【问题讨论】:

您的复选框是否使用checkedlistbox 不..我在groubox中使用普通checkbox..如果这是最简单的方法,我可以将其更改为checklistbox.. 【参考方案1】:

你可以创建一个checkedlistboxmycheckedlist 然后使用

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");
        
              

这是因为我不知道您的数据库表中还有什么以及那里有哪些列,如果您将这些添加到您的问题中,我可以更新我的答案。

【讨论】:

谢谢.. 我的数据库表中每个复选框只包含一列 @AhmedMohammed 你在使用任何 ORM 吗?喜欢小巧玲珑?

以上是关于如何知道是不是选中了表单中的多个复选框并将值插入数据库表c#的主要内容,如果未能解决你的问题,请参考以下文章

如果提交表单时未选中复选框,如何将布尔值更新为 0

如何将多个复选框值插入表中?

知道是不是选中复选框的正确方法[重复]

jQuery查看是不是选中了任何复选框

Form表单提交

选中复选框时,数据表视图将值插入到字段中