小弟做查询生成统计报表,因为使用了框架,所以需要弹出一个新窗口作为报表。采用的方法原理如下:
点击test1.aspx的Button1,弹出test2.aspx页面,并读取test1.aspx页面中控件tbx_uname,ddl_organ的值传给test2.aspx。
test1.aspx
private void btn_rp_Click(object sender, System.EventArgs e)
{
         string uname="",uorganid="";
         if(tbx_uname.Text.Trim()!="")
uname=tbx_uname.Text.Trim();
if(ddl_organ.SelectedItem.Value!="")
uorganid=ddl_organ.SelectedItem.Value;
string str=""; 
str="<script language='javascript'>"; 
str+="window.open(";                
str+="\""  +"user_report.aspx?username="+uname; 
str+="&userorganid="+uorganid; 
str+="\",'',' width =792 , height = 400 ,toolbar=yes, menubar=yes,resizable=yes, location=center,scrollbars = yes,location=yes, status=yes')"; 
str+="}";
str+="</script>";
Response.Write(str); test2.aspx
    string uname,uorganid;
    uname=Page.Request["username"];
    uorganid=Page.Request["userorganid"];功能是实现了,但是如果用ie浏览器的前进或者后退按钮经过这个页面的时候,都会自动按照最近一次的条件自动再弹出一次窗口,而我是将这些都写在button的click事件中的啊?这个问题该如何解决?大家还有什么比较好的方法,来弹出新窗口并将原页面控件的值传到新页面?

解决方案 »

  1.   

    可以用SESSION来判断。恩。
    譬如说。设置通过了。SESSION的某个值为TURE。不然为FALSE。在PAGE_LOAD里判断罗
      

  2.   

    这种功能没有必要写服务器段代码,直接在Html页面里写Javascript就行了。
      

  3.   

    你可直接写在按钮的脚本事件里面,不必提交到服务端去弹出
    在后台代码中这样写
    this.Button1.Attributes.Add("onclick","window.open('xxx.aspx','','');return(false);");
    这样,点击按钮即弹出页面,后退到该页面也不会再响应一次了.
      

  4.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=4617也可以设置前进后退按钮失效。。Response.Expires  =  0    
     
    Response.CacheControl  =  "no-cache"加在PAGE_LOAD里
      

  5.   

    hehe,对啊,让前进后退失效就解决了。但是始终觉得不好看,提示找不到页面,好像可以通过自定义错误页面来掩饰这点哈。偶也想过不通过服务器端控件,但是我要从服务器端控件里面读取用户所选的内容,然后传值,所以goddy123、hchxxzx的建议俺没怎么理解?
      

  6.   

    使用javascript可以直接读取用户选择和填写的内容,没有必要非使用服务端程序读取