弹出新页面,并刷新父页面

本文介绍了一种在子页面操作完成后刷新父页面的方法,并详细解释了如何通过按钮触发页面刷新及重新绑定GridView数据的过程。

一、弹出新页面,刷新的父页面只是单纯的刷新,而不是重新获取某些数据的话。可以直接在子页面设置一个按钮,后台事件为:

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可以获取从页面传递过来的参数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值