最开始用这个控件的时候不知道只需要在PageChanged里绑定数据就可以了,不需要在Page_Load里绑定数据。
结果调试后是绑定了两次,后来把Page_Load里的绑定去掉了。只绑定一次,完全正常,没有任何问题。
但是现在突然又出了个问题,PageChanged执行后绑定完数据第一页,正常。点击其他页,再执行PageChanged事件时CurrentPageIndex还是为1,数据就始终只显示第一页了,后来尝试把绑定的方法执行两次。很奇怪又正常了。
在执行第一次时CurrentPageIndex是为1的,执行第二次时CurrentPageIndex就正常了,就是说在执行第一次绑定方法时CurrentPageIndex被重置了,连续第二次执行又取到了,很困惑,大家有遇到过的说说吧,谢谢。
我是用URL分页的,存储过程没有问题。

解决方案 »

  1.   

    Page_Load里加  
     if (!IsPostBack)
            {
    方法()
    }
      

  2.   

    测试过,问题不在这里。
    我的Page_Load里没有任何代码。唯一的数据绑定就写在PageChanged事件中了(因为Page_Load再写一遍就会执行两次)。
      

  3.   

    你用什么分页方式?如果是默认的PostBack分页,页面加载时必须先绑定一次数据,PageChanged事件处理程序中再绑定一次,如果是url分页,才只需要在PageChanged事件处理程序中绑定一次。另外注意RecordCount属性的值和分页数据不能同时在一个方法中返回,必须先设置RecordCount属性,分页控件会根据这个属性值计算其它属性,如TotalPageCount、StartRecordIndex、EndRecordIndex等。
      

  4.   

    哇。
    大驾光临啊,不胜感激。转入正题,我是用URL分页的。如果在page_load和pageChanged事件都绑定,数据就是正常的。
    如果只在pageChanged里绑定的话,CurrentPageIndex会一直会1(页面上只要执行两次绑定方法,就是正常的。否则进入pageChanged后CurrentPageIndex就成1了。)
    现在我临时性把用aspnetpager1.CurrentPageIndex获取当前页索引的代码改成Convert.ToInt32(Request.QueryString[AspNetPager1.UrlPageIndexName]),是正常的。
    搜索了半天了,还是没搞出个所以然来
      

  5.   

    就是用URL分页,也是会绑定两次,每次翻页都绑定两次,在那设计你说的那个PostBack类型呢
      

  6.   

    URL分页,为了不让他绑定2次,只能这样去得到第几页了       
         int p;// = AspNetPager1.CurrentPageIndex;
                if (Request.QueryString["p"] == null)
                {
                    p = 1;
                }
                else
                {
                    p =Convert.ToInt32( Request.QueryString["p"]);
                    AspNetPager1.CurrentPageIndex = p;//一直都是1,所以用这种法子给它改
                }
      

  7.   


    Url分页时只需要在PageChanged事件处理程序中绑定数据,不需要也不能在Page_Load中绑定,这样的话就导致绑定两次。
      

  8.   

    问问:
       aspnetPager 的作者是 webdiyer(陕北吴旗娃) ????
       ??????????????????????????
      

  9.   

    public partial class AspNetPager : System.Web.UI.Page
    {
        DataSet ds;
        SqlDataAdapter dr;
        SqlCommand com;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["SperConnectionString1"].ToString();
                string strconn = "Data Source=(local);Database=INFO;Uid=sa;Pwd=5354";//连接数据库
                SqlConnection con = new SqlConnection(strconn);
                con.Open();
                com = new SqlCommand();
                com.Connection = con;
                com.CommandText = "select count(*) from zhong";//查询表
                AspNetPager1.AlwaysShow = true;
                //AspNetPager1.PageSize = 5;
                AspNetPager1.RecordCount = (int)com.ExecuteScalar();
                con.Close();
                RepeaterDataBind();
            }
        }    private void RepeaterDataBind()
        {
            //string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["SperConnectionString1"].ToString();
            string strconn = "Data Source=(local);Database=INFO;Uid=sa;Pwd=5354";//连接数据库
            dr = new SqlDataAdapter("select * from zhong", strconn);
            ds = new DataSet();
            dr.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "zhong");
            this.GridView1.DataSource = ds.Tables["zhong"];
            this.GridView1.DataBind();        AspNetPager1.CustomInfoHTML = " 总页数:<b>" + AspNetPager1.PageCount.ToString() + "</b>";
            AspNetPager1.CustomInfoHTML += " 当前页:<font color=\"red\"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";
        }    protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
        {
            AspNetPager1.CurrentPageIndex = e.NewPageIndex;
            RepeaterDataBind();
        }
      

  10.   

    使用ViewState["page"]的方式存储CurrentPageIndex
      

  11.   

    PageIndex的值在分页的时候没改变的吧
      

  12.   

    最近比较忙,都忘了帖了。。呵呵。想不到还有人光临啊。对。是的。我是用URL分页的,没有在Page_load里绑定。只在PageChanging里绑定了。
    但是跳转后URL里的page参数值获取不到。总是1,如果在PageChanging里调用两次绑定方法的话,第二次绑定时获取是正确的。
      

  13.   

    不好意思,打错了,是PageChanged。
      

  14.   

    吴先生你好,不知这个说法应该如何理解,我使用了URL分页,且没有使用changed事件,而在pageload中完成绑定和设置pager的属性,测试并没有问题哦
      

  15.   

    郁闷啊~    作者的话估计说的应该没错,不过我也是在页面里加了        if (!IsPostBack)
            {
                bandingData((string)ViewState[statusSql]);
            }多绑定了一次才运行成功的,要不然始终为1,怎么点都不翻页 
    同样我看别人的代码里就像作者说的那样 PageChanged 绑定一次就能翻页
    同样也是  UrlPaging="True" 
    有人知道这是为什么吗
      

  16.   

    吴旗娃老大还在么?
    我也是类似的问题、举个例子:
    我从a.aspx?page=3 中的某个<a href="b.aspx?id=xx"></a>跳转到另一个页面、然后在b.aspx?id=xx这个页面想要添加一个“返回文章列表”这样的超链接、要怎么样才能跳转回a.aspx?page=3啊(按浏览器的"后退"按钮可以返回)?因为好像不能直接把“%CurrentPageIndex%”写到href里面,取不到page=3这个参数值、、也不能写死 因为文章动态更新的
    紧急求教、、、、老大你快出来啊
      

  17.   

    晕,这个超级简单,<a href="javascript:history.back()">返回</a>
      

  18.   

    我也是这个问题,仔细看了一下吴老大的这句真言“另外注意RecordCount属性的值和分页数据不能同时在一个方法中返回,必须先设置RecordCount属性”的意思,又看了一下示例,改了一下自己的分页显示,现在可以了。还是解释一下吴老大的这句话,要把设置RecordCount属性值和绑定分页数据分开,其实这里应该说明一下,设置RecordCount值,不管是像老大给的示例中设置常量值还是从数据库里提取的也好,都是在设置RecordCount属性值,而绑定分页数据就是指给数据显示控件Repeater,DataList,GridView绑定数据,这两个是分开的。再说的明白一点,在PageChanged的事件中只能写绑定分页数据的代码,而不能设置RecordCount属性值,也就是在PageChanged事件外面设置RecordCount。就是在Page_Load中写这个
    if(!IsPostBack)
    {
        AspNetPager1.RecordCount=数据库中提取的记录总数
    }
    我的是这样改的,现在正常
      

  19.   

    我一直都是全部写在PageChanged事件中的啊,刚开始是可以的,后来突然不行了,目前怀疑可能是使用basePage后产生的问题,现在还没有测试。
      

  20.   

    我也遇到过,把页面的viewstate禁用了之后就是这种情况,只能用URL分页了。启用了之后就好了!!