UrlPaging 设置为 true
为什么每次anpPager.CurrentPageIndex 都是1
private void Page_Load(object sender, System.EventArgs e)
{
    BindOrgList(anpPager.CurrentPageIndex,OrderType,IsOnSearch);
}private void anpPager_PageChanged(object sender, EventArgs e)
{
}#region 绑定机构列表
/// <summary>
/// 绑定机构列表
/// </summary>
/// <param name="pageSize">页大小</param>
/// <param name="currrentPage">当前页</param>
/// <param name="orderType">排序类型</param>
/// <param name="isOnSearch">搜索状态</param>
protected void BindOrgList(int currentPage,int orderType,bool isOnSearch)
{
    IList list;
    int recordCount = 0;
    string keyword="";
    int searchScope=0;
    if(isOnSearch) //如果在搜索状态则调用相应的搜索函数
    {
 if(Request["k"]!=null)
 keyword = Request["k"].ToString();
 if (Request["s"]!=null)
     if (Request["action"]!=null) 
     {
 lblshowDetail.HRef = "organizations02.aspx?action=search&s=" + Request["s"].ToString() +"&k=" + Request["k"].ToString();
     }
 searchScope = int.Parse(Request["s"].ToString());
 if(searchScope==0)
     list = new OrgOrgServices().SearchOrgByNameOrderByViews(anpPager.PageSize,currentPage,out recordCount,keyword);
 else if(searchScope==1)
     list = new OrgOrgServices().SearchOrgByManageAreaOrderByDate(anpPager.PageSize,currentPage,out recordCount,keyword);
 else
     list = new OrgOrgServices().SearchOrgByAreaOrderByViews(anpPager.PageSize,currentPage,out recordCount,keyword);
                   }
 else //否则绑定所有课程信息列表
 {
 if (orderType==0) 
 {
 list = new OrgOrgServices().GetAllOrgOrderByViews(anpPager.PageSize,currentPage,out recordCount);
 }
 else
 {
      list = new OrgOrgServices().GetAllOrgOrderByCreateDate(anpPager.PageSize,currentPage,out recordCount);
  }
           }
    rptOrgInfo.DataSource = list;
    rptOrgInfo.DataBind();
    anpPager.RecordCount = recordCount;
}
#endregion

解决方案 »

  1.   

    //为什么每次anpPager.CurrentPageIndex 都是1
    根据经验表明....AspNetPager默认分页从0开始...DataList等默认分页从1开始,
    印象里这两个是不统一的,说错表怪
      

  2.   

    BindOrgList(Request.QueryString["page"]!=null?int.Parse(Request.QueryString["page"].ToString()):1,OrderType,IsOnSearch);
      

  3.   

    原因-每次回刷先执行page_load,此时pagechange还没触发,因此
    anpPager.CurrentPageIndex 一直是1
    改为-
            private void Page_Load(object sender, System.EventArgs e)
            {
                if (!IsPostBack)
                {
                    Bind(); 
                }
            }        private void Bind()
            {
                BindOrgList(anpPager.CurrentPageIndex, OrderType, IsOnSearch);
            }        private void anpPager_PageChanged(object sender, EventArgs e)
            {
                Bind();
            }
      

  4.   

    首先了解一下楼主的代码执行的顺序吧:
    1.进入页面时,初始化所有成员 CurrentPageIndex = 0;
    2.执行PageLoad方法,获取并显示数据。
    3.点击翻页按钮(例如:下一页),执行按钮事件(btnNext_Click)对应的代码(翻页+重新绑定)。CurrentPageIndex += 1; //CurrentPageIndex = 2;
    4.点击翻页按钮后页面刷新,初始化所有成员。CurrentPageIndex = 0;
    5.执行PageLoad方法,获取并显示数据。CurrentPageIndex = 0;
    结果:没有实现翻页效果。
    --------------------------
    解决方法:要保存上次的页号,可以使用ViewState对象(如:ViewState["pageIndex"])
    private void Bind()
    {
        if(ViewState["pageIndex"] != null)//判断当前页号是否存在
        {
            //如果存在让控件翻到该页
            anpPager.CurrentPageIndex = Convert.ToInt32(ViewState["pageIndex"]);
        }
        BindOrgList(anpPager.CurrentPageIndex.OrderType,IsOnSearch);
    }private void ampPager_PageChanged(object sender,EventArgs e)
    {
        ……
        ViewState["pageIndex"] = anpPager.CurrentPageIndex + 1;
        ……
    }