我使用了自动分页功能,同时使用用linkbuttn实现删除可是点下一页时报这样错误:
索引超出范围。必须为非负值并小于集合大小。参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误: 
行 88:  {
行 89: 
行 90:  string bm=this.DataGrid2.DataKeys[e.Item.ItemIndex].ToString();
行 91: 
行 92:  if(e.CommandName.ToString()=="Delete")

解决方案 »

  1.   

    你的datagrid在执行这段语句时没有行造成的
      

  2.   

    http://blog.csdn.net/tonybaobao/archive/2005/01/16/255447.aspx
      

  3.   

    应该是没有设 DataGrid的DataKeyField属性
      

  4.   

    应该是没有设 DataGrid的DataKeyField属性
      

  5.   

    http://blog.csdn.net/tonybaobao/archive/2005/01/16/255447.aspx
      

  6.   

    你看这样可以吗?  ......
      //声明一个变量获取当前页。
      int lblindex;
      lblindex=dtgtable.currentpageindex;
      if(dtgtable.pagecount-dtgtable.currentindex==1 &&
         dtgtable.items.count==1)
      {
        //如果总的页大于1就减1,否则就等于0
        if(dtgtable.currentindex>0)
        {
           lblindex__;
           //lblindex-=1;
           lblindex=lblindex-1;
        ]
        else
        {
           lblindex=0;
        }
      }
      //***设置当前页
      dtgtable.currentindex=lblindex;
      InitDataBind();//调用邦定函数
      ......
      

  7.   

    就是楼上说的原因,在绑定前加上判断就可以了
    if(DG_Main.CurrentPageIndex>Dt.Rows.Count/DG_Main.PageSize)
    {
    DG_Main.CurrentPageIndex -= 1;
    }