刚做好了一个DataGrid显示数据库中的数据,其中第一行显示name,为HyperLinkColumn,当点击名称时,传递对应的ID值到修改页面,修改完毕后,返回主页面.
当翻页时,点击名称,修改完毕后,返回主页面,此时因为刷新的时主页面,所以显示的时第一页的内容.
而我想让他显示的还是第二页的内容.
考虑到HyperLinkColumn列传值的单一性,我用一个静态变量来记录页码(用全局变量不行,当页面转到另外一个页面时,全局变量会消失),当翻页修改完毕,返回刷新主页面是,让DataGrid的CurrentPageIndex等于该静态变量,(翻页按钮控制静态变量的值)也就是显示了之前的页。
这样成功实现了页码的记忆功能。
可是问题接着出来了。当我关掉页面,重新在运行的时候,页面显示的还是上次的页码。应该是上次的静态变量没有清空的问题,我不知道在哪里清空该静态变量。在该静态变量初始化的时候也不能将它的值写为0。

解决方案 »

  1.   

    不要用静太变里!你这样并发会有问题!你改变一下分页方式!PagedDataSource类实现分页
    !这样你的页数就可
    像这样!
    http://dotnet.aspx.cc/Exam/Repeater2.aspx?Page=2
      

  2.   

    ViewState不行的吧,楼主的问题需要在页面间切换,ViewState不能保存。我想楼主一开始用的所谓静态变量是session吧? 你可以
    int i=Convert.ToInt32(Session["id"]);
    datagrid1.CurrentPageIndex=i==-1 ? 0 : i;  //如果是-1的话就显示第一页,否则显示存储页
    Session["id"]=-1; //使用完就置-1;
      

  3.   

    ViewState 不行,不能保存,Session我在试一下,楼上的请看清我的题目
      

  4.   

    用session就好了多谢 zpisgod(GOD)
      

  5.   

    不用这样的!javascript脚本可以实现:
    如在datagrid页html中:
    function openDialog(theUrl)
    {
    var ret=showModalDialog(theUrl,"","dialogHeight: 500px; dialogWidth: 630px;edge: Sunken; center: Yes; help: Yes; resizable: Yes; status: Yes;")

    if(ret)
    {
    window.location.reload(true);
    }
    }
    name列超链接用javascript:openDialog("yoururl");
    修改页完毕后返回 window.returnValue=true;即可刷新上一页,相当于f5,页数也是当前的