子窗口关闭刷新父窗口或者某个控件事件或者传递值到父窗口

做程序过程,经常遇到弹出新窗口设置或者编辑,关闭新窗口需要在父窗口中刷新部分控件或者数据,又不想刷新父窗口整个页面,因为父窗口部分输入或者部分操作会因为重新刷新重置。比如:通过弹出窗口来编辑和新增信息,当保存完成 子窗口关闭时自动刷新父页面上的一个gridview,将数据显示出来。通过jsp的 window.parent.opener.document.getElementById()解决这个问题。

例如:子窗口中关闭时JS代码,启动父窗口中控件btnQuery:
function refreshParentData() 
{ 
if(window.parent.opener != null) 
{ 
var btn = window.parent.opener.document.getElementById("btnQuery"); 
if ( btn != null) 
btn.click(); 
else 
window.parent.opener.location.href =window.parent.opener.location.href; 
} 
} 


如果运行环境是.net,在父窗口中控件必须是html控件,然后通过父窗口JS函数调用父窗口C#函数,间接实现局部刷新的效果。

一、网页弹出对话框

function showDialog(param1,param2...)
      {
          settings = "dialogWidth:450px;dialogHeight:600px;help:no;status:no";
          mypage="dialogPage.aspx?param1="+param1+"¶m2="+param2+....;
          window.showModalDialog(mypage,window,settings);
      }


在aspx文件中的html控件中调用即可,即<input type="button" id="btn" value="showDialog" οnclick="showDialog(param1,param2)" />
param1,param2是两个参数,在调用时这两个值可动态生成,可使用<%#     %>技术。
settings是用来设置弹出的对话框的一些状态,即宽度,高度,是否显示帮助按钮,是否显示状态栏,(但在IE中,设置状态栏的显示是没有用的,汗...)

推荐使用仿制百度弹出窗口: http://hi.baidu.com/chybing2008/blog/item/981fd92cc433ccea8b1399a4.html


二、当弹出的对话框对后台数据库作了改变时,需要刷新父页面时,请在弹出的对话框中引用下行代码:
Response.Write("<script language='javascript'>window.dialogArguments.location.reload();window.close();</script>");
该行代码是在服务器端执行的,若要在客户端执行的话,请直接调用:
window.dialogArguments.location.reload();window.close();即可。

三、把在对话框中获得的值传到父页面中

function AddAgentId(agentId)
    {
       window.dialogArguments.theForm.txtTo.value = agentId;
       window.self.close();
    }


在网页对话框中直接调用该函数即可,agentId在调用时可动态设置
theForm及txtTo是父页的<form id="theForm"></form>中的ID值,txtTo是该窗体中的一个
<asp:TextBox id="txtTo" runat="server" />ID值。

补充:如果在网页对话框中要提交数据到后台文件执行,请在网页对话框(也是一个aspx文件)的头部加一句指令,加到<title></title>后部:
<base target="_self" />这样,在对话框中提交时就不会再提交到一个新的文件中了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值