索引超出范围。必须为非负值并小于集合大小。
protected void BtnDelete_Click(object sender, EventArgs e)
{
//StringBuilder sb = new StringBuilder();
foreach (GridViewRow row in this.UserView.Rows)
{
CheckBox chkSelect = row.FindControl("chkSelect") as CheckBox;
if (chkSelect!=null)
{
if (chkSelect.Checked == true)
{
//sb.Append(UserView.DataKeys[row.RowIndex].Value.ToString());
int id = (int)this.UserView.DataKeys[row.RowIndex].Value;
YTO.User.BLL.UserBiz.DeleteUser(id);
}
}
else
{
Response.Write("<script>alert('你没有选择需要回复的留言,请重新选择!');</script>");
return;
}
}
this.UserView.DataBind();
}
批量删除的时候报错
{
//StringBuilder sb = new StringBuilder();
foreach (GridViewRow row in this.UserView.Rows)
{
CheckBox chkSelect = row.FindControl("chkSelect") as CheckBox;
if (chkSelect!=null)
{
if (chkSelect.Checked == true)
{
//sb.Append(UserView.DataKeys[row.RowIndex].Value.ToString());
int id = (int)this.UserView.DataKeys[row.RowIndex].Value;
YTO.User.BLL.UserBiz.DeleteUser(id);
}
}
else
{
Response.Write("<script>alert('你没有选择需要回复的留言,请重新选择!');</script>");
return;
}
}
this.UserView.DataBind();
}
批量删除的时候报错
作者: baojijie1 发布时间: 2011-06-15
你循环历遍的是 "this.UserView.Rows" ,
在循环中操作的是 this.UserView.DataKeys[row.RowIndex]
那么 Rows.Count 一定要等于 DataKeys.Count
如果不等于则会报索引超出范围的错误.
在循环中操作的是 this.UserView.DataKeys[row.RowIndex]
那么 Rows.Count 一定要等于 DataKeys.Count
如果不等于则会报索引超出范围的错误.
作者: Lost_Painting 发布时间: 2011-06-15
断点看下 DataKeys的count 。
作者: zell419 发布时间: 2011-06-15
引用 1 楼 lost_painting 的回复:
你循环历遍的是 "this.UserView.Rows" ,
在循环中操作的是 this.UserView.DataKeys[row.RowIndex]
那么 Rows.Count 一定要等于 DataKeys.Count
如果不等于则会报索引超出范围的错误.
+
你循环历遍的是 "this.UserView.Rows" ,
在循环中操作的是 this.UserView.DataKeys[row.RowIndex]
那么 Rows.Count 一定要等于 DataKeys.Count
如果不等于则会报索引超出范围的错误.
作者: Ranen2010 发布时间: 2011-06-15
断点 row.RowIndex
作者: wxr0323 发布时间: 2011-06-15
row.RowIndex为-1说明没有选到数据
作者: liuchaolin 发布时间: 2011-06-15
打个断点调试下。这里应该是错误的根源
int id = (int)this.UserView.DataKeys[row.RowIndex].Value;
int id = (int)this.UserView.DataKeys[row.RowIndex].Value;
作者: wjhgzx 发布时间: 2011-06-15