我对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");
}
}
}
由于
答案 0 :(得分:2)
你应该只循环遍历数据行。
if (row.RowType = DataControlRowType.DataRow) { /* your code */ }
查看DataControlRowType
枚举以查看不同的类型,这将是有意义的。
另外,我强烈建议在您的ADO.NET类(using
,SqlConnection
)中使用SqlCommand
块。这样,您无需致电.Close()
或.Dispose()
;它将自动处理,您的代码看起来更清晰。
答案 1 :(得分:0)
除去
Response.Redirect("ReassignpParticularWork.aspx");
在“已检查”状态之外。
你在第一次检查时离开了,而不是通过其余的xD继续迭代