• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net父窗体获取子窗体的返回值,可用来对父窗体局部更新

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

今天在项目上遇到了这个问题,其实只是window.returnValue的简单应用,不是asp.net的专属内容。作为积累,记录一个简单的实现模型。

 

图1  用到的文件

   从图1中我们可以看到,只用到了两个页面,其中Default.aspx作为父页面,Default2.aspx作为子页面被弹出。Default.aspx页面上有两个TextBox一个Button,代码如下:

1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title></title>
8
9 </head>
10 <body>
11 <form id="form1" runat="server">
12 <div>
13 <asp:TextBox runat="server" ID="a1">
14 </asp:TextBox>
15 <asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged"></asp:TextBox>
16 <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
17
18
19 </div>
20
21 </form>
22 </body>
23 </html>
24

 

 

 

在Button1的Click事件中,我们注册弹窗脚本,代码如下:

 

1 protected void Button1_Click(object sender, EventArgs e)
2 {
3 StringBuilder s = new StringBuilder();
4 s.Append("<script language=javascript>");
5 s.Append("var a=window.showModalDialog('Default2.aspx');");
6 s.Append("if(a!=null)");
7 s.Append("document.all('TextBox1').value=a;");
8 s.Append("</script>");
9 Type cstype = this.GetType();
10 ClientScriptManager cs = Page.ClientScript;
11 string sname = "lt";
12 if (!cs.IsStartupScriptRegistered(cstype, sname))
13 cs.RegisterStartupScript(cstype, sname, s.ToString());
14 }

 

 

其中  s.Append("var a=window.showModalDialog('Default2.aspx');");一句用来弹窗Default2.aspx页面并接收它的返回值。

接收了返回值之后我们把它赋值给TextBox1.

 

 

 Default2.aspx页面有一个TextBox和一个Button,代码如下:

 (这里需要注意的是在head里的<base target="_self" />标记十分重要。

1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head >
7 <title></title>
8 <base target="_self" />
9 </head>
10
11 <body>
12 <form id="form1" runat="server">
13 <div>
14 <asp:textbox runat="server" ID="t1"></asp:textbox>
15 <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
16
17 </div>
18 </form>
19 </body>
20 </html>
21

我们在Default2.aspx页面的Button_Click事件中使用脚本返回一个值给父页面。代码如下:

 

1 protected void Button1_Click(object sender, EventArgs e)
2 {
3 StringBuilder s = new StringBuilder();
4 s.Append("<script language=javascript>" + "\n");
5 s.Append("window.returnValue='" + this.GetSelectValue() + "';" + "\n");
6 s.Append("window.close();" + "\n");
7 s.Append("</script>");
8 Type cstype = this.GetType();
9 ClientScriptManager cs = Page.ClientScript;
10 string csname = "ltype";
11 if (!cs.IsStartupScriptRegistered(cstype, csname))
12 cs.RegisterStartupScript(cstype, csname, s.ToString());
13
14 }

脚本注册成功之后,我们可以做如下的实验:

1)打开Default1.aspx页面在id为a1的TextBox中输入数字55,然后点击Button

2)在弹窗中输入数字66再点子窗体的按钮关闭子窗体。

3)查看结果

从结果中,我们可以看出我们保留了先输入到父窗体中的值,又接收了从子窗体传递过来的值。

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.net获取服务器指定文件夹目录文件,并提供下载发布时间:2022-07-10
下一篇:
ASP.NETwindows验证IIS配置发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap