当从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();
}
}
}
通过(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();