有两个页面Condition.aspx(条件选择),Result.aspx(结果显示)。要在Condition.aspx(条件选择)中选择条件后把条件传递(用Window.open()函数)到Result.aspx(结果显示)并用Datagrid显示。
问题就是,当我在Condition.aspx(条件选择)页面中选择不同条件分别提交后,在Datagrid中开始能显示不同的结果,但是当我刷新后,数据就全部变成最后一次选择条件的结果!我想能不能保留每次查询的结果,也就是在此结果页面刷新,数据也不变!!

解决方案 »

  1.   

    “刷新后,数据就全部变成最后一次选择条件的结果”
    难道查询有累加的情况么??
    注意DataGrid在页面重新加载时是否重载。
      

  2.   

    因为每一次我都要传参数到显示的页面Result.aspx,所以出现这样的情况
      

  3.   

    if(!Page.IsPostback)//关键
    {
    BindDataGrid();
    }
      

  4.   

    engine198473(我喜欢偷偷的看她偷偷的看我) 你说的这个当然要写了,我所以的都是这样的,但是还是这样!!
      

  5.   

    页面缓存问题
    在HEAD标记内加上
    <META http-equiv="pragma" content="no-cache">
    <META http-equiv="Cache-Control" content="no-cache, must-revalidate">
    <base target="_self">
      

  6.   

    To:remymartin(杯中明月) 页面缓存问题?我 把你给的考到页面上也没有改变啊。
    我测试了一下,是相同类型选择项的不同条件才出现这样的问题。比如,分别选择同一个DropDownList的两个Item作为两次查询的条件,那么第二次弹出的选择的条件就覆盖第一次选择的条件。请各位多给点建议!!
      

  7.   

    条件输入框 加上 runat=server
      

  8.   

    To dutguoyi(新鲜鱼排) 我的意思是查询两次或者多次,用Window.open弹出数据显示页面并传值,但是发现几次弹出的页面一旦刷新全都变成最后一次选择的条件的数据。我是不想让它改变,各是各的!
      

  9.   

    如果换种方示lz你看行不行
    你把window.open改变为showmodaldialog来做了?这样你想刷新都难!
      

  10.   

    或者麻烦点,你的问题就是request值不能被每个打开的页面存下来,所以你现在就只需要想办法让每个弹出页面存下来就行了 
    在弹出窗口页面加个viewstate缓存得到的request值,每次page_load的时候先取viewstate[],若viewstate为空然后再取request值并缓存(只是建议,我也没有测试)
      

  11.   

    To: jimu8130(IBMT43) 看来我的表达有问题。说了半天,就你明白我的意思。我试试你的第二种方法,
    开始的时候我合适用JavaScript脚本锁住了刷新,但是点击分页的效果和刷新一样。
      

  12.   

    你是怎么样传参数的呢? querystring 还是 form
      

  13.   

    点击分页的效果?是不是你的page_load事件里面对于datagrid的绑定没有写在!IsPostBack里面?
      

  14.   

    你的意思是说你用viewstate来缓存了request值这中方法么?
    你先单步调试测试下多个弹出页面得到的viewstate值是否相同(第一次打开),然后刷新后viewstate值是否改变,如果没有改变那么应该是你的程序某个地方有问题,如果变为最后一个弹出页面的viewstate值的话,那么我建议的这个方法肯定是不行的 ps:既然翻页会导致刷新,那么你不让它翻页,去掉datagrid的翻页功能了 ?
      

  15.   

    To:laughingrat(傲笑红尘),用querystring 传值
    To:jimu8130(荷兰走了) ,问题就是必要要分!好像这个问题不能回避解决,只能直接从技术方面入手。
    各位有没有说什么好办法???
      

  16.   

    如果以上各位的办法都没用,就用笨一点的办法吧:
    在Result.aspx(结果显示)页面中加一个HTML隐藏控件,将选择的条件保存在这个隐藏控件.value属性中...
    刷新后,在隐藏控件.value中获得条件值...
      

  17.   

    代码:
    Response.Write("<script language=javascript>window.open(result.aspx?condition="+strCondition+"', '_balnk','height=500,width=1000,location=no,top=100, left=10, personalbar=yes,scrollbars=yes,resizable=yes');</script>");
    就是这样了。当我选择两次,并连接result.aspx两次(也就是strCondition已经变化后),我刷新(或者是点击分页-Datagird提供的)首先弹出的页面,数据就变成后面所选择条件的数据了--两个页面的数据一样,前面的被后面的覆盖!
      

  18.   

    注意看看刷新页面后result.aspx?condition=XXX,这个XXX值在刷新前、后有没有变化...右键点页面,看属性中的地址...我想,你可能使用了Session来保存DataGrid的数据源~
      

  19.   

    To:i169net1(阿康) 不是用Seesion了,我晓得用Session肯定会发生上面的情况,我用的是Request传值,我也试着用Cookie,但是结果还是一样,反正只要分页,就会使弹出的几个页面的数据一样,而排序则没有发生上面的情况,!!
      

  20.   

    建议你用Window.showModalDialog
    在弹出的页面加上除去缓存的代码,
    Dialog是无法刷新的