-1

嗨,我对我的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");
            }
        }
    }

谢谢

4

2 回答 2

2

您应该只遍历数据行。

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

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

此外,我强烈建议using您在 ADO.NET 类 ( SqlConnection, SqlCommand) 中使用块。这样,您不需要调用.Close()or .Dispose(); 它会被自动处理,你的代码会看起来更干净。

于 2013-08-28T13:58:46.370 回答
0

消除

Response.Redirect("ReassignpParticularWork.aspx");

在“已检查”条件之外。

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

于 2013-08-28T14:05:48.793 回答