问题如下:
点击了HyperLink,打开了A页面。再次点击HyperLink,又打开了一个A页面。请问有谁知道,如何使 再次点击HyperLink,如果A页面存在的话,就不要再次重复打开??
在线等~~~谢谢。以上是我昨天发的一个求救帖,已经结了~~~但是现在还有个问题想请教,就是再次点击HyperLink,如果A页面存在的话,不再打开新的A页面(已解决),并且,不要让A页面被重新加载(现在的现象就是好像在同一窗口中A页面被重新打开了一次,这样,在A中的数据就全都没有了),不要让A页面的数据状态丢失,有没什么好方法???
在线等,谢谢

解决方案 »

  1.   

    在datagrid 的hypelink列的url格式字符串中写上:javascript:OpenWindow("{0}")
    在页面中加入javascript代码:
    <script language="JavaScript">
      function OpenWindow(id)
      {
       var Userid=id;
      
         window.open(".aspx?ID="+Userid,null,"width=450,height=550,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes");
       
      }
    </script>
    //
      

  2.   

    这个问题有点复杂哩,我提供一个思路,你去试试!我也没有试过!
    你在那个按钮的click事件里设一个逻辑型公共变量,当点击后使它保存一个值,你在打开的A页面中的page_unload()事件中再把这个变量改成初始值.或者也可以考虑Session保存状态!
      

  3.   

    jiang8282(雪山飞狐) 
    请教~~~这段话不是很明白阿~~~
      

  4.   

    kingdhy(飞鹰) 
    page_unload()事件中再把这个变量改成初始值.或者也可以考虑Session保存状态!那这个如果我的子页面有很多的关闭方法那不是要做很多的处理?有没有简单点,不用涉及到子页面的方法呢?或者改动较小的~~~~感谢~!!!
      

  5.   

    (1)
    在按钮的click事件里首先判断session["clickflag"]是否为假,如果为假,则打开新的页面,否则不打开.
    (2)
    在A页面中的page_unload()事件里把session["clickfalg"]重新设成假!明白了吗?
      

  6.   

    kingdhy(飞鹰) 但是好像HyperLink在进入它的CLICK事件之前,应该说是page_load之前就已经把新的页面给......
    呵呵~~~
      

  7.   

    jiang8282(雪山飞狐)
    在datagrid 的hypelink列的url格式字符串中写上:javascript:OpenWindow("{0}")这个,不知道怎么加~~~麻烦指点下~~~
      

  8.   

    但是好像HyperLink在进入它的CLICK事件之前,应该说是page_load之前就已经把新的页面给......
    呵呵~~~
    ??????不明白!
      

  9.   

    但是好像HyperLink在进入它的CLICK事件之前,应该说是page_load之前就已经把新的页面给......点击HyperLink后,在主页面还没有走到他的click事件的时候,子页面已经被刷新掉了
      

  10.   

    //js脚本,至于怎么用到里面应该很简单吧
    var popUpWin;//保存打开的窗口变量
    function popUpWindow(URLStr)
    {
      if(popUpWin)//如果存在该变量
      {
        if(!popUpWin.closed) popUpWin[userid].focus();//如果该窗口打开,那么focus
        else //否则打开窗口
          popUpWin = open(URLStr,'_blank',width=100,height=100);
      }
      else {//如果不存在,说明窗口没打开,那么打开窗口
           popUpWin = open(URLStr,'_blank',width=100,height=100);
      }
    }
    Dreamweaver自带的例子里面有这么一段脚本,平时多注意点,呵呵。
      

  11.   

    if(!popUpWin.closed) popUpWin[userid].focus(),把[userid]去掉,从原来的代码上拷贝过来的,临时给你改的简单的。呵呵。
    我用这种方法,打开n个窗口,并且可以判断其中任意一个窗口是否打开。方法是行得,你看怎么用到你自己的程序中去。
      

  12.   

    warfen(学无止境) 这段脚本有错误~~~不能执行哇
      

  13.   

    var popUpWin=0; 
    function popUpWindow(URLStr, left, top, width, height) { 
    if(popUpWin) { 
        if(!popUpWin.closed) popUpWin.focus();
    }
    popUpWin = open(URLStr, 'popUpWin', 
    'toolbar=no,location=no,directories=no,status=no,menub ar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', 
    top='+top+',screenX='+left+',screenY='+top+''); 

    这是Dreamweaver原版代码,我把popUpWin.close()改成了popUpWin.focus()
    如果你用hyperlink只是传递一个参数,你可以用一个绑定列,然后在列里这样写:
    <a onclick=popUpWindow(<%# DataBinder.Eval(Container,"DataItem.绑定的参数")%>,left, top, width, height) href=#>点击</a>
      

  14.   

    if(!popUpWin.closed) popUpWin.focus();改一下:
    if(!popUpWin.closed) {
        popUpWin.focus();
        return;//如果不return 则下面又重复开了窗口
    }
      

  15.   

    datagrid右键==》在DataGrid编辑模板列中,添加超级链接列,在超级链接列中 URL添加字段和
    URL格式字符串,
    javascript:OpenWindow("{0}")
    {0}表示上URL中的字段值,
    这个传递过程 就是把 一个URL字段值传到javascript函数中去,
      

  16.   

    warfen(学无止境)
    感谢,那段脚本我用了
    但是,主页面一刷新的话~~~,好像popUpWin的值就没了吧?那子页面不是等于还是被重新打开了一次?子页面又被刷掉了~~~55555555
      

  17.   

    这没办法,刷新页面肯定是没了。要不你用Cookie试试?
      

  18.   

    这个这个~~~我们这边不允许使用Cookie~~~~~郁闷
      

  19.   

    换一中思路思考,不要被一种思路局限死了,也许别的方法,也能解决问题,如果你会ajax可以试下通过xmlhttp来实现无刷新调用.cs模块。
      

  20.   

    还是没想到什么好方法,可以把前台JAVA里的值给保存起来~~~
      

  21.   

    不需要这么复杂,window.open本身有一个特性,就在它的第二个参数里面
    window.open("xxx.aspx",name,"");
    只要你中间的那个name变量有正式命名,那么,在打开的时候,它就会自动判断,不会多次弹出窗口.比如如下代码:
    <a href=# onclick="window.open('b.htm','myname','')">open</a>
    这样就可以了.