ASP.NET使用弹出窗口(对话框)的体会

今天在做一个弹出模态窗口时搞了我一晚上。google半天,找来找去文章就哪么几篇,别人的能刷新偶的就是不行,后来在一网友帮助下总算是找到问题所在,搞定了。

//在模态窗口中提交数据总是会弹出一个新窗口,上次遇到过这问题,所以这次一来就在html里加上了
    <form id="form1" runat="server" target="bbc2188">
     <iframe name="bbc2188"   width="0px"   height="0px"   frameborder="0"    style="display:none"></iframe>
//然后在网上又看到这样一段,    <base target="_self">,偶就把这段加到head里面去了,因为没太注意这个target="_self"所以搞得偶一晚上都在找问题。

就这样自己试了很多常用js刷新页面的方法,都不能实现这个模态页面刷新,又搜索了半天,看到有人这样重新加载要刷新的页面

在html里放一个a标签,让他不显示。

 <a id='reload' href='default.aspx?pid=' style='display:none'></a>

下面是用到的js脚本

<script language ="javascript" type ="text/javascript" >
        function geturl()//得到url中的参数,因为偶做的是一个图片评论,所以这用js接收图片id方便从新绑定时用。
      {
           var parmName="pid";
           var url = window.location.toString();
           var arr = url.split("?");
           var parms = arr[1];
           var parmList = parms.split("&");
           var parmTemp;
          
           for(var i=0;i<parmList.length;i++)
           {
                parmTemp = parmList[i].split("=");
                if(parmTemp[0] == parmName)
                return parmTemp[1];
           }
           return "0"
      }

    function setReloadHref()//刷新网页
   {
        var reload=document.getElementById ("reload");
        reload.href ="default.aspx?pid="+geturl()+"&"+Math.random();
    }
    function reloadClick()//单击触发刷新事件
    {
        var reload=document.getElementById ("reload");
        reload.click();
    }
    </script>
然后在<body>中添加事件处理方法

<body οnkeydοwn="javascript:if (event.keyCode==116){reload.click();}" onload ="setReloadHref();">

现在页面可以刷新了,但怎么总不是最新的呢?也就是说现在提交一条数据页面刷新还是没变,只有在按一次F5这个模态窗口才刷新刚才提交的数据,删除也一样,后来发现把<form id="form1" runat="server" target="bbc2188">中的target属性去掉就搞定了。一提交就完成刷新了。

并且之前添加的哪些木用的js脚本也可以删除了,又是一个小错误搞偶一晚上,哎。
====================

模态对话框(ASP/ASP.NET)(zz from other blogs)

asp中的模态对话框

终于开始写B/S的程序。
今天遇到了一个问题, 如何处理模态对话框。具体的要求是:在选择页面上的“添加”按钮,弹出模态对话框,在对话框中添加记录后,选择“确定”按钮,关闭对话框,更新主页面表格的数据。

网上关于模态对话框的讨论有很多,试了一天,发现一个比较好的解决方法:

1、显示对话框:
  在javascript脚本文件中加入:
   function OpenEditWin(frmWin,width,height)
  {      
   var me;
   // 把父页面窗口对象当作参数传递到对话框中,以便对话框操纵父页自动刷新。
   me = window;
   // 显示对话框。
   window.showModalDialog(frmWin,me,'dialogWidth='+width +'px;dialogHeight='+height+'px;help:no;status:no')
  }
  
在C#中调用 :
cmdAdd.Attributes.Add("onclick","javascript:OpenEditWin('" + Session["showForm"] + "',540,400)");
很多方法是用 Response.Write或者RegisterStartupScript 来实现,但是都存在问题,如显示对话框时页面是空白、刷新页面的时候弹出对话框等。
在对话框中加入jscript脚本
  function1 onsubmit() // 强制本窗口提交
  {
   document.Form1.target="_self";
  }
2、关闭对话框
   Response.Write("<script language='javascript'>");
   Response.Write("window.close()");
   Response.Write("</script>");

3、对话框关闭后,执行更新操作
   在对话框的关闭事件中加入:
  Response.Write("<script language='javascript'>");
   Response.Write("window.close()");
   Response.Write("</script>");
4、更新主页面中的表格数据。
  在“添加”按钮的处理方法中,添加表格更新的代码。

ASP.NET使用弹出窗口(对话框)的体会

       从整理这篇文章的目的,在于记录前一段使用弹出窗口的经验,同时结合对一些资料的阅读,总结弹出窗口使用方法。
        首先描述一下需求:在信息发布系统中,信息的一个字段信息为“栏目”,需要从多级栏目中选择出一个栏目发布文章。考虑到用户界面的美观和操作的方便,决定在新信息发布页面中放置一个Button,用户点击该Button后,弹出一个显示栏目树的窗口,用户可在该窗口中选择栏目。
        这样就引出了本文要讨论的问题:如何弹出窗口?如何在父窗口和弹出窗口之间传递信息?
在回答这两个问题之前,首先需要指出,目前有三种方法可以弹出窗口(对话框),它们分别是:

  • window.open方法
  • 无模式对话框
  • 有模式对话框       

        如何在这三种方法中做出选择、如何对后两种方法做出前面两个问题的回答,这在文后所附的文章中都有介绍。所以,这里主要针对window.open方法做出回答。
       下面是一个使用window.open弹出窗口的简单的例子:

< script >
function  open_cate()
{
    window.open(
" OpenUp.aspx " , "" , " toolbar=0,location=0,directories=0,status=0,
                menubar=0,scrollbars=1,resizable=0,left=200,top=100,width=250,height=400
" );

}
</ script >

 

从代码中可以看出,我们可以对弹出窗口的诸多属性进行设置。如果我们想要在点击一个Button时弹出窗口,值需要在该Button的OnClick时间中调用该JavaScript函数即可。

解决了如何弹出窗口的问题之后,下面讨论如何在页面之间传递信息。

父窗口向弹出窗口传递信息
  

这里我采用的办法是在URL中拼接参数传递信息。window.open的第一个参数为URL,我们可以把参数加在URL后,例如'OpenUp.aspx?parm1=abc&parm2=<%=serversideparm%>'。这样,只需在弹出窗口QueryString到这些参数,就实现了动态向弹出窗口传递信息。

将弹出窗口的信息传回父窗口
  

使用弹出传口的目的主要是为了同用户的交互,所以如何在父页面中得到用户对弹出窗口的操作结果是非常重要的。其实这里实现的方法也很简单,同样是通过JavaScript:通过window.opener得到父窗口的window对象,就可以对父窗口进行操作,比如对某个TextBox设值。

后记

当初为了实现这个简单的交互操作,花费了整整一下午的时间,关键是对JavaScript太生疏,自以为做Server端的东西才是本事,其实是犯了大错。

另外,如果在Js中引用.net Server端对象遇到对象为空的报错时,很有可能是对象在编译后,VS对控件进行了重命名。一开始这里不知道,害得我好苦

关于有模式对话框和无模式对话框
参见下面的链接:
好的对话框的重要性
http://www.microsoft.com/china/msdn/archives/technic/library/techart/dude09252000.asp

================

如何跳出页面的Frame框架

很多网页都是框架结构的,在很多的情况下会通过按钮点击事件或链接,跳出框架转到其它界面。例如说点击“注销登录”返回到登录界面。

一、通过运行脚本跳出框架有以下几种写法:

1.  <script language = javascript>window.open('Login.aspx','_top')</script>"

2.  <script language = javascript>window.open('Login.aspx','_parent')</script>"

3. <script language = javascript>window.parent.location.href='login.aspx'</script>

4.    Response.Write("<script>window.parent.opener=null;window.top.close();</script>")

       Response.Write("<script>window.open('index.aspx','');</script>")

       这种方法会先关闭原框架窗口,再重新打开一个新的窗口。这在很多功能界面对浏览器进行了改变设置,而回到登陆界面又用缺省设置的情况下适用。

二、链接跳出框架

这种情况就很简单了,加上 target="_top" 属性就可以了。

 

转载于:https://www.cnblogs.com/chinhr/archive/2008/09/23/1296405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值