做程序过程,经常遇到弹出新窗口设置或者编辑,关闭新窗口需要在父窗口中刷新部分控件或者数据,又不想刷新父窗口整个页面,因为父窗口部分输入或者部分操作会因为重新刷新重置。比如:通过弹出窗口来编辑和新增信息,当保存完成 子窗口关闭时自动刷新父页面上的一个gridview,将数据显示出来。通过jsp的 window.parent.opener.document.getElementById()解决这个问题。
例如:子窗口中关闭时JS代码,启动父窗口中控件btnQuery:
如果运行环境是.net,在父窗口中控件必须是html控件,然后通过父窗口JS函数调用父窗口C#函数,间接实现局部刷新的效果。
在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
在网页对话框中直接调用该函数即可,agentId在调用时可动态设置
theForm及txtTo是父页的<form id="theForm"></form>中的ID值,txtTo是该窗体中的一个
<asp:TextBox id="txtTo" runat="server" />ID值。
例如:子窗口中关闭时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" />这样,在对话框中提交时就不会再提交到一个新的文件中了。