Asp.net 使用复选框从gridview中选择单个行

Asp.net 使用复选框从gridview中选择单个行,asp.net,gridview,checkbox,Asp.net,Gridview,Checkbox,我有一个gridview,它在template字段中包含一个复选框。我想检索选中复选框的行的值,以便通过数据库更新它们。这是我的密码: protected void approve_Click(object sender, EventArgs e) { for (int i = 0; i < GridView1.Rows.Count; i++) { if (((CheckBox)GridView1.Rows[i].Fi

我有一个gridview,它在template字段中包含一个复选框。我想检索选中复选框的行的值,以便通过数据库更新它们。这是我的密码:

    protected void approve_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            if (((CheckBox)GridView1.Rows[i].FindControl("Select")).Checked) 
            {

然而,它似乎不起作用。例如,我检查了表中的五行,它只更新第一行。我该怎么办?

在找到选中的行后,您正在重新绑定Gridview。完成所有更新操作后绑定它:

protected void approve_Click(object sender, EventArgs e)
{
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        if (((CheckBox)GridView1.Rows[i].FindControl("Select")).Checked) 
        {
            //I thought if the loop finds a checked check box, it will execute the following to that row:
            con.Open();
            string approve = "update table set status ='Approved' where ID=" + GridView1.Rows[i].Cells[1].Text + "";

            SqlCommand scmapprove = new SqlCommand(approve, con);
            scmapprove.ExecuteNonQuery();

            //view(); //Donot rebind the gridview now.
            con.Close();
        }
    }

    view();
}
protected void approve\u单击(对象发送者,事件参数e)
{
对于(int i=0;i
您是将ID绑定到第二列还是第一列?你的代码看起来不错!您是否需要
GridView1.Rows[i].Cells[0].Text
?您好,我试过了,它说找不到ID。我想这是因为复选框在第0行?什么是
view()?你要用这个重新绑定Gridview吗?是的。这是一个函数,这就是问题所在。重新绑定后,将重新生成所有行。因此,在完成检查和更新数据库后绑定GridView。请看下面我的答案。
protected void approve_Click(object sender, EventArgs e)
{
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        if (((CheckBox)GridView1.Rows[i].FindControl("Select")).Checked) 
        {
            //I thought if the loop finds a checked check box, it will execute the following to that row:
            con.Open();
            string approve = "update table set status ='Approved' where ID=" + GridView1.Rows[i].Cells[1].Text + "";

            SqlCommand scmapprove = new SqlCommand(approve, con);
            scmapprove.ExecuteNonQuery();

            //view(); //Donot rebind the gridview now.
            con.Close();
        }
    }

    view();
}