当我点击下一页或上一页时,我跟踪调试了一下,发现它总会去执行!IsPostBack的内容,导致其他Repeater的数据丢失了。它好像不像不其他的按钮事件一样,当点击按钮时,就不会重复执行!IsPostBack的内容。意思就是说它好像是访问新的一页一样,会去执行!IsPostBack里的代码。

解决方案 »

  1.   

    因为我设置了UrlPaging="True"这个属性就会,这样在页面中就可以看到page参数,否则就是那种分页代码:_dopostback('',''),但这样的分页方式在前台是不友好的。
      

  2.   

    最近用的aspnetpager版本低了不支持url重写把我给弄死了,如果你现在用的版本低赶快换高版本的
      

  3.   

    执行!IsPostBack的内容,导致Repeater的数据丢失
    不可能是!IsPostBack造成的,一定是其他原因,你检查检查
      

  4.   

    谁的问题也不是,还是自己的问题,你既要前台友好,又要用viewstate,这不是难为aspnetpager吗,设置了UrlPaging="True"说明你放弃使用viewstate,页码每次点击都重新加载页面,其他服务器端控件也应该放弃viewstate,但是按你现在的逻辑,有的控件要用viewstate,有些却不用。解决办法就是不用再判断if(!Page.IsPostBack){...}页面加载的时候邦定需要邦定的东西就行了,不要出现回调的情况,这才是前台友好。就像asp页面那种,每次访问从零开始。
      

  5.   

    每次访问从零开始的话,那么还有很多绑定的地方都要连接数据库,这样对服务器的压力大呀!为什么点击button时,就不会执行!Page.IsPostBack下的代码呢?
      

  6.   

    且我用了这样的代码呀。如果从0开始的话,那么它还是会执行以下代码: if (!IsPostBack)
                {
                    if (Request.QueryString["page"] == null)
                    {
                        TrainerBind();
                    }
                }
    再去执行以下代码,
    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
            {
                try
                {
                    if (Request.QueryString["page"] != null)
                    {
                        //pageindex = AspNetPager1.CurrentPageIndex;
                        pageindex = Int32.Parse(Request.QueryString["page"].ToString());
                        TrainerBind();
                    }
                }
                catch
                {
                    Response.Write("<script>alert('参数错误!');window.location.href='../index.html';</script>");
                    return;
                }
            }
    这样不就重复了吗?但我这里是加了Request.QueryString["page"] == null这句才不让它去执行TrainerBind();代码。如果不加则会执行。
      

  7.   

    但是希望在页面初始化时,执行if (!IsPostBack) 
                { 
                    if (Request.QueryString["page"] == null) 
                    { 
                        TrainerBind(); 
                         xxx();
                         yyy();
                    } 
                } 
    中的xxx();yyy();后,点击分页后就不用再重复执行它们了。只要执行一个重新绑定数据源的代码就OK呀。
      

  8.   

    wpgcn 说得很对,既然用了url分页,那么每次分页都会打开新页面,而不是回发,所以!IsPostBack中的代码都会执行,这个道理很简单,我想任何人都能理解的,如果不想这样,那就只能用默认的PostBack分页方式。
      

  9.   

    用到url分页就会这样  页面参数变了
      

  10.   

    但为什么第一次加载时,还会去执行AspNetPager1_PageChanged这个事件呢?如果if (Request.QueryString["page"] != null)这个的话,它又会去执行TrainerBind();这个方法。但如果是UrlPaging="True"设置为false时,初次加载时就不会执行AspNetPager1_PageChanged事件
      

  11.   

    如果不加if (Request.QueryString["page"] != null)这个的话
      

  12.   

    告诉你吧,用这个分页控件,绝对很棒!!!!!http://www.51aspx.com/CV/UcfarPager/
    本人在网上一直没有找到自己想要的分页控件,要么界面不理想,功能不全、要么支持的浏览器不好、要么代码臃肿、效率低下、bug极多的诸如aspNetPager等控件居然连css也封装起来不让改而且写得很繁琐,其实我只要其中的一个功能样式,其他的我都不需要,而且在使用过程中大家可能也会遇到我这样的问题第一次控件加载的时候,默认必须要执行他的其中一个方法,害得我不得不采用变通的方式绕过该bug,而且就是出现最新的版本7.02。当然我非常佩服控件的作者的技术水平,尊重他的劳动成果和共享精神。希望他做得更好。由于本人业余开发,时间仓促,使用中难免与个人的使用习惯及功能需求有不当的地方。欢迎指正。
    功能特点:  
      一、支持网上流传的24种分页样式;
      二、无限扩展自定义样式,灵活;
      三、支持所有asp.net控件分页绑定;
        四、分页效率高;
      五、扩展方便、灵活性高;
      六、支持所有浏览器,文档类型、兼容性高;
    使用方法:
    /* 24种分页样式复制粘贴开始(名称不要变,只要复制内容即可)*/
    ......pagerstyle.css里面的标记内容
    /* 24种分页样式复制粘贴结束*/
    24种分页样式见目录!
    演示中数据控件是GridView、数据库使用的是Access(位置:App_Data/web.mdb),UcfarPager.dll组件暂时没有开源
    大家在使用过程中有任何问题请与作者QQ: 18066799(Yekin-yu)联系,非常感谢您的反馈,让我们把他做得更好,更方便大家的使用。