用datagrid自动分页后,进行删除记录,每当删到只有两页时,删第二页最后一条记录他就报错,信息如下:
     无效的currentpageindex值,它必须大于等于0

解决方案 »

  1.   

    安全的方法就是删除后把currentpageindex 设为0
    ========
    我的签名
      

  2.   


    try
    {}
    catch
    {
    currentpageindex--;
    重新绑定
    }
      

  3.   

    try
    {
    delete();
    reBindDataSource();
    }
    catch
    {
    currentpageindex--;
    reBindDataSource();
    }
      

  4.   

    删除事件中:
             //delete         //判断
    if( DataGrid1.CurrentPageIndex!=0 )
    if( DataGrid1.Items.Count == 1 )
    DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 2;
    else
    DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1;         //绑定
             BindGrid();
      

  5.   

    //功能:删除某一材料
    int cailiaoId=int.Parse(e.Item.Cells[0].Text);
    CaiLiao obj=new CaiLiao();
    bool success=obj.Delete(cailiaoId);
    int CurrentPage = 0;
    if (success)
    {
    if(this.DataGrid1.CurrentPageIndex == this.DataGrid1.PageCount -1)
    {
    if (this.DataGrid1.CurrentPageIndex == 0)
    {
    this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount -1;
    }
    else
    {
    if (this.DataGrid1.Items.Count % this.DataGrid1.PageSize == 1)
    {
    CurrentPage = 2;
    }
    else
    {
    CurrentPage = 1;
    }
    this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount - CurrentPage;
    }
    } }
    else 
    {
    Response.Redirect("error.aspx",true);
    }
    BindData();
      

  6.   

    在绑定前做:
    if(datagrid.CurrentPageIndex >= datagrid.PageCount)
        datagrid.CurrentPageIndex = 0;
      

  7.   

    在执行删除后执行datagrid.CurrentPageIndex = 0;
      

  8.   

    出现这个问题很正常的,在你绑定时加上以下代码:
    try
    {
    DataGrid1.DataBind();
    }
    catch
    {
    int i=DataGrid1.CurrentPageIndex;
    while(i>=DataGrid1.PageCount)                      //避免最后一条纪录删除不出错
    {
    i--;
    }
    DataGrid1.CurrentPageIndex=i;
    DataGrid1.DataBind ();
    }