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

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB App Designer 是一个用于创建交互式应用程序的图形用户界面 (GUI) 工具。当你想要在 MATLAB App 中出新的子窗口或面板时,通常会用到以下设计思路: 1. **继承和组合**: 使用 `uifigure` 对象作为基类,创建一个新的组件(如 `uifigure` 或 `dialog`)作为出窗口。如果你需要共享某些布局或样式,可以将它们定义在一个单独的 `uipanel` 或 `uitableau` 等中,然后在新窗口中复制或引用。 2. **回调机制**: 当用户触发特定操作(例如按钮点击或菜单选择)时,调用特定的回调函数。这个函数通常包含创建新窗口的代码,例如 `figure('Name', 'New Window')` 或者 `dlg = uibuttongroup('Title', 'New Dialog')`。 3. **数据管理**: 在新窗口之间传递数据时,可以使用 ` GUIDATA` 和 `GUICallbacks` 变量结构来存储和更新数据。也可以通过设置 `UserData` 属性传递自定义的数据。 4. **响应式设计**: 为了保持用户体验流畅,新窗口的关闭、显示和隐藏应根据用户的操作进行相应的处理,比如在新窗口关闭后删除或刷新数据。 5. **UI设计原则**: 考虑到用户体验和可用性,确保新窗口的布局清晰、直观,遵循统一的视觉风格和交互模式。 相关问题: 1. App Designer 中如何创建一个可关闭的对话框? 2. 如何在新窗口中实现与主窗口的数据同步? 3. 如何设置新窗口的默认行为(例如自动最小化或最大化)?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值