protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
 string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
...
}
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
网上很多类似的,不过找不到正确的。来个大侠解决这个问题!

解决方案 »

  1.   

    是否有设置GridView的KeyValueField属性?
      

  2.   

    string index=e.CommandArgument.ToString(); //那行被选中,取出选中行的索引 
    int id=Convert.ToInt32(GridView1.Rows[Convert.ToInt32(index)].Cells[0].Text); 
    可以通过这种方法 得到选中行的ID
      

  3.   

    点GridView在属性面板中找到DataKeyNames,输入之!!
      

  4.   

    你的GridView不是绑定的某张表吗?例如设置DataKeyNames="ID",ID是你数据库中某张表的一列,通过此列可以和数据关联起来,你的e.RowIndex是从0开始的索引,然后通过DataKeys[]方法找到ID