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

做程序过程,经常遇到弹出新窗口设置或者编辑,关闭新窗口需要在父窗口中刷新部分控件或者数据,又不想刷新父窗口整个页面,因为父窗口部分输入或者部分操作会因为重新刷新重置。比如:通过弹出窗口来编辑和新增信息,当保存完成 子窗口关闭时自动刷新父页面上的一个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控件中调用即可,即
param1,param2是两个参数,在调用时这两个值可动态生成,可使用<%#     %>技术。
settings是用来设置弹出的对话框的一些状态,即宽度,高度,是否显示帮助按钮,是否显示状态栏,(但在IE中,设置状态栏的显示是没有用的,汗...)

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

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

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

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


在网页对话框中直接调用该函数即可,agentId在调用时可动态设置
theForm及txtTo是父页的
中的ID值,txtTo是该窗体中的一个
ID值。

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

你可能感兴趣的:(ajax学习)