索引超出范围。必须为非负值并小于集合大小。

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();
  }


批量删除的时候报错

作者: baojijie1   发布时间: 2011-06-15

你循环历遍的是 "this.UserView.Rows" ,

在循环中操作的是 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

如果不等于则会报索引超出范围的错误.
+

作者: 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;
 

作者: wjhgzx   发布时间: 2011-06-15