如何遍历gridview中的复选框值

时间:2013-08-28 13:55:29

标签: c# asp.net

我对gridview的复选框有这个问题,在选中复选框后,应重新分配所有选中的行,并单击重新分配按钮。但它只是重新签名检查的第一个项目,似乎它没有循环通过gridview。能帮我辨别出我的代码中有什么错误或缺失:

  protected void Reassign_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in ParticularWorkGridView.Rows)
        {
            CheckBox _checkBox = (CheckBox)row.FindControl("ReassignCheckBox");
            Label _RecordNumberLabel = (Label)row.FindControl("NumberLabel");

            if (_checkBox != null &&
                _checkBox.Checked == true)
            {
                SqlConnection con = new SqlConnection(GetConnectionString());
                SqlCommand cmd = new SqlCommand("[Reassig]", con);
                cmd.CommandType = CommandType.StoredProcedure;

                string MemberID = DropDrownList.SelectedValue;

                cmd.Parameters.AddWithValue("number", _NumberLabel.Text);
                cmd.Parameters.AddWithValue("@MemberID", MemberID);

                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }

                cmd.ExecuteNonQuery();
                con.Close();
                cmd.Dispose();
                Response.Redirect("ParticularWork.aspx");
            }
        }
    }

由于

2 个答案:

答案 0 :(得分:2)

你应该只循环遍历数据行。

if (row.RowType = DataControlRowType.DataRow) { /* your code */ }

查看DataControlRowType枚举以查看不同的类型,这将是有意义的。

另外,我强烈建议在您的ADO.NET类(usingSqlConnection)中使用SqlCommand块。这样,您无需致电.Close().Dispose();它将自动处理,您的代码看起来更清晰。

答案 1 :(得分:0)

除去

Response.Redirect("ReassignpParticularWork.aspx");

在“已检查”状态之外。

你在第一次检查时离开了,而不是通过其余的xD继续迭代