由于在编辑结束后,返回当前页面,所以启动AspNetPager分页控件的url分页功能,但是通过筛选数据后,url分页功能有个bug,每次点击切换页面后,总是促发页面回滚,IsPostBack=true,导致viewstate丢失。请问如何解决这个问题?网上的说法:http://blog.csdn.net/greymouseyu/archive/2009/03/22/4015653.aspx
但感觉到说不清楚

解决方案 »

  1.   


    去吴旗娃的网站上问问去吧。。看有什么好的方法。。如果是这样。。可以考虑存到session中
      

  2.   

    AspNetPager +自己写的存储过程+自己写的分页类 无bug 调用方便 几句代码 直接绑定
    100W数据 每页10行 翻页 只需瞬间
    而且 支持各种定位  多写 就好了 锻炼问题
      

  3.   

    不是很明白楼主的问题,用url分页后,每次分页都是打开新页面,用ViewState没任何作用,ViewState只要用默认的Postback分页方式时才能传递。BTW:这几天机房有问题,导致主页打不开了,请大家过段时间再访问。
      

  4.   

    因为添加了搜索功能,所以使用ViewState保存sql查询语句  string sql = "select * from users";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) //url分页,ViewState 总被重置为sql,搜索数据又变为全部数据
        {
            ViewState["sql"] = sql; //保存查询语句
        }
    }//搜索按钮
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        if (ViewState["sql"]=null)
        {
            ViewState["sql"] = sql; 
        }    if (txtName.Text != "")
        {
            ViewState["sql"] += " where uname like '" + txtName.Text + "'";//保存查询语句
        }    //绑定数据。。}这样问题就来了,AspNetPager 启用了url分页后,点击切换页码按钮后,IsPostBack=true总是成立,所以ViewSate总被重置为初始的sql。
      

  5.   

    ViewState的特点吧,改用Session存储就可以了吧
      

  6.   


    if (!IsPostBack) 
    IsPostBack=true总是成立??楼主了解这句代码的意思吗?意思和你说的正好相反,IsPostBack不是true,而是false。这不是AspNetPager的bug,而是你不了解它的工作原理。
      

  7.   

    if (!IsPostBack) 总是成立 导致ViewState恢复初始值
      

  8.   


    if (!IsPostBack) 总是成立 ,使用Session不是一样的被重置,因为肯定要在第一次加载页码事件中给Session赋初始值的。
      

  9.   

    string sql = "select * from users";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) //url分页后总是为true,ViewState 总被重置为sql,搜索数据又变为全部数据
        {
            ViewState["sql"] = sql; //保存查询语句
        }
    }//搜索按钮
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        if (ViewState["sql"]==null)
        {
            ViewState["sql"] = sql; 
        }    if (txtName.Text != "")
        {
            ViewState["sql"] += " where uname like '" + txtName.Text + "'";//保存查询语句
        }    //绑定数据。。}因为url分页后,url发生改变,页码变成第一次加载了,所以if (!IsPostBack)总为true
      

  10.   

    你在PostBack中判断Session值是否为空, 如果为空,再弄成默认值就可以了
      

  11.   

    用PostBack驱动的分页跳转和纯粹的URL分页是两码事..,服务端的处理也就不一样了,后者每次跳转页,都是第一次访问,即每次都触发if (!IsPostBack),所以与什么 ViewState没有直接关系
    而用Button之类的服务端控件触发的PageSelectedIndex_Changed事件,以及DataBind()就不一样了
      

  12.   

    Thank all 使用页面的搜索功能下,ViewState 如何与AspNetPager控件的url分页并用,确实有点疑问。因为ViewState 只能在本页面使用。
    而Session可以解决这个问题。
      

  13.   

    现在又有一个问题了,虽然用Session是可以,但是也有一个问题,如果Session不失效,重新打开页面时,显示的是之前搜索的数据,而不是全部的数据