你看一下admin_user.CurrentPageIndex的值,他是从0开始的,你得给他加一作为第一页。
参考:
if ( int.Parse( JumpTo.Text ) > ListDataGrid.PageCount )
{
ListDataGrid.CurrentPageIndex = ListDataGrid.PageCount;
}
else
{
ListDataGrid.CurrentPageIndex = int.Parse( JumpTo.Text );
}
if ( ( ListDataGrid.CurrentPageIndex - 1 ) <= 0 )
{
ListDataGrid.CurrentPageIndex = 0;
}
else
{
ListDataGrid.CurrentPageIndex = ListDataGrid.CurrentPageIndex - 1;
}

解决方案 »

  1.   

    之所以出现这个问题,是因为你索引到的记录只用一页就显示完了,而你当前的页是第二页,搜索结果中这一页根本就不存在,所以会出现上面的“无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。”这样的错误信息,避免这个错误的方法是,在搜索记录并绑定数据之后,将当前的页索引设为0,即第一页。------------------------------------
    还在为如何为你的 asp.net 数据显示控件分页而大伤脑筋吗?请试试 AspNetPager 免费分页控件,也许它会合你的意!http://www.webdiyer.com
      

  2.   

    在绑定到datagrid时做检测页面就可以了例
    int intPageCount=(ds.tables[0].rows.count-1)/dg.pagesize;
    if (dg.currentPageindex>intpageCount)dg.currentPageIndex=intpagecount>0?intpagecount:0;
      

  3.   

    你需要把生成sql语句的部分和绑定的部分分开(两个函数)..eg.
    private void BnQuery_Click(object sender, System.EventArgs e)
    {
    //生成查询语句
    string StrSelect="....";

    StrSelect+=" order by a.id desc"; ViewState["StrSql"]=StrSelect; DgOddNumber.CurrentPageIndex=0;
    DgOddNumberBind();
    }private void DgOddNumberBind()
    {
    DataSet DsOddNumber=r.GetData("TbOddNumber",ViewState["StrSql"].ToString());
    DgOddNumber.DataSource=DsOddNumber;
    DgOddNumber.DataBind();
    }分页的时候DgOddNumberBind()一下;
    关键之处DgOddNumber.CurrentPageIndex=0;