当从asp.net c#中的gridview中选择复选框时,检索并存储数据库中的复选框值

本文关键字:复选框 检索 存储 数据库 中的 gridview asp 当从 选择 net | 更新日期: 2023-09-27 17:59:55

我有一个GridView,其中包含一个显示学生出勤信息的复选框。当我选中复选框时,该值(它是一个位值)不会存储在数据库中。

这是我的代码:

protected void btn_attendence_Click(object sender, EventArgs e)
{
    con = [CONNECTION STRING];
    cn = new SqlConnection(con);
    cn.Open();
    foreach (GridViewRow gvrow in grid_attendence.Rows)
    {
        CheckBox chk = ((CheckBox)grid_attendence.FindControl("chbox") as CheckBox);
        if (chk.Checked)
        {
            st = "insert into atd(attend,stno,stname) values ('" + gvrow.Cells[0].Text + "','" + gvrow.Cells[1].Text + "','" + gvrow.Cells[2].Text + "')";
            cmd = new SqlCommand(st, cn);
            cmd.ExecuteNonQuery();
            Response.Write("Record inserted");
            cn.Close();
        }
    }
}

当从asp.net c#中的gridview中选择复选框时,检索并存储数据库中的复选框值

通过(CheckBox)gvrow 更改(CheckBox)grid_attendence

foreach (GridViewRow gvrow in grid_attendence.Rows)
{
    var chk = (CheckBox)gvrow.FindControl("chbox");
    if (chk.Checked)
    {
        st = "insert into atd(attend,stno,stname) values ('" + gvrow.Cells[0].Text + "','" + gvrow.Cells[1].Text + "','" + gvrow.Cells[2].Text + "')";
        cmd = new SqlCommand(st, cn);
        cmd.ExecuteNonQuery();
        Response.Write("Record inserted");
        cn.Close();
    }
}

一些额外的东西:

  • 您不应该像使用字符串串联那样创建查询,否则会受到sql injection攻击。请改用参数化查询。

  • 无需像((CheckBox)grid_attendence.FindControl("chbox") as CheckBox)那样进行双重铸造(查看我的代码)

--在表中再添加一列状态布尔类型,并将其值设置为0或1。

CheckBox chk=((CheckBox)grid_attence.FindControl("chbox")作为CheckBox);if(检查){st="插入atd(attent,stno,stname,status)值('"+gvrow.Cells[0].Text+"','"+gvrow.Cells[1].Text+"','"+gvrow.Cells[2].Text+(',1)";}其他的{st="插入atd(attent,stno,stname,status)值('"+gvrow.Cells[0].Text+"','"+gvrow.Cells[1].Text+"','"+gvrow.Cells[2].Text+(',0)";}cmd=新的SqlCommand(st,cn);cmd。ExecuteNonQuery();响应。写入("插入记录");cn.Close();