一、弹出新页面,刷新的父页面只是单纯的刷新,而不是重新获取某些数据的话。可以直接在子页面设置一个按钮,后台事件为:
Response.Write("<script> window.opener.location.href=window.opener.location.href;window.close();</script>");
有时候我们在写代码时,会遇到这样的问题:当我新增完一条数据后,需要清空输入控件数据,以便重新让用户录入数据。一个简单的办法,就是让页面进行刷新,而不用人工一条数据一条数据的清空。怎么样,这样子是不是简单很多?
如果在关闭的时候有关闭提示.那就把window.opener=null;加在window.close()前面.但一般情况.子页面是父页面打开的.此时关闭子页面是不会提示的.
二、弹出新页面,并刷新父页面重新绑定一些数据设置步骤:
(以用户点击父页面的gridview图标进行跳转页面,当用户在子页面操作成功后,重新绑定父页面gridview为例进行讲解。)
第一步:父页面设置点击的图标及相关数据。
telerik公司开发的girdview:(这里强烈推荐使用gelerik控件,该控件扩展了许多功能,尤其是数据绑定控件,比如treeview,添加了checkbox属性。下一节将详细解析此控件)
<telerik:GridTemplateColumn HeaderText="注销" HeaderStyle-Width="40px" UniqueName="QueryDetail">
<ItemTemplate>
<img alt="注销" src="../../../Img/Log.jpg" id="img_Query" onclick ="return lbtn_Query_Click('<%#eval_r("FWMLID") %>')">
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn HeaderText="服务名流ID" DataField="FWMLID" UniqueName="FWMLID" Visible="false">
</telerik:GridBoundColumn>
第二步:在父页面设置跳转
点击图标事件:(为上述中<Itemplate>中<img>图标事件)
代码: function lbtn_Query_Click(FWMLID) {
var varOptions = "dialogWidth:400px;dialogHeight:300px;status:no;resizable: Yes;scroll:Yes;help:NO ";
var a = window.showModalDialog("EliteLogPop.aspx?FWMLID=" + FWMLID, window, varOptions);
if (a == "1 ") {
//刷新
document.getElementByIdx_x_x_x_x_x("btn_Query").click();
}
}
第三步:数据图标事件已经设置好,但是重要的刷新绑定在哪呢?对上段中提到:document.getElementByIdx_x_x_x_x_x("btn_Query").click();中的查询按钮的click事件。查询事件将数据从数据库中获取绑定。(此段还是父页面代码,这段代码可以共用查询绑定事件的代码)
前台代码如下:
<Asp:Button ID="btn_Query" runat="server" Text="查询" OnClick="btn_Query_Click"/>
后台代码:
protected void btn_Query_Click(object sender, EventArgs e)
{
wg_Info.DataSource = ds;//为避免不必要的视觉疲劳,有些代码省略
wg_Info.DataBind();//wg_Info为gridview
}
第四步:父页面设置好后,就万事具备,只欠东风了。在子页面,我们只需要如下操作:
子页面前台代码:
<Asp:Button runat="server" ID="btn_Log" Text="注销" OnClick="btn_LogOut_Click" />
<head runat="server">
<title>服务名流注销</title>
<base target="_self" />
</head>
子页面后台代码:
protected void btn_LogOut_Click(object sender, EventArgs e)
{
if (success)
{
string message = "注销成功!";
Response.Write(" <script>alert('" + message + "'); window.returnValue=1;window.close(); </script> ");
}
}
到此事情就完成了。
在这里不防啰嗦几句。window.returnValue是返回到父页面的参数,父页面根据子页面返回的值操作。当返回1时表示,操作完成,此时父页面要进行刷新gridview。然后本人在学习操作时,没有在子页面中添加<base target="_self" />,对就是该页面中唯一的用红色标注出来的。如果没有这句话,用火狐照样可以正常运行,可是到IE上,事情发展就没有发么顺利了。IE会跳出三个页面,后来的两个页面是一样的。并且第三个页面执行的是弹出注销成功消息,然后关闭页面,第二个页面如果用户不操作的话会永远停留在屏幕上,并且父页面得不到刷新。这句话的意思是在本页面打开窗口,防止额外窗口的弹出,并且IE6和IE7放这句话的位置不同会产生不同的效果。为了保险起见,建议大家都放在本文中<head>标签里。
附:如果想了解更多的内容,可以参考另外一个博客:http://blog.sina.com.cn/s/blog_49c16fee0100cn87.html,讲的不怎么详细,但内容很广泛。
子页面中的script代码:var obj = window.dialogArgumentswindow.dialogArguments可以获取从页面传递过来的参数。