您的位置:首页 > 其它

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

2014-01-17 16:55 288 查看
做程序过程,经常遇到弹出新窗口设置或者编辑,关闭新窗口需要在父窗口中刷新部分控件或者数据,又不想刷新父窗口整个页面,因为父窗口部分输入或者部分操作会因为重新刷新重置。比如:通过弹出窗口来编辑和新增信息,当保存完成 子窗口关闭时自动刷新父页面上的一个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" onclick="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" />这样,在对话框中提交时就不会再提交到一个新的文件中了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐