博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net 父窗体获取子窗体的返回值,可用来对父窗体局部更新
阅读量:6631 次
发布时间:2019-06-25

本文共 3286 字,大约阅读时间需要 10 分钟。

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

 

2010030821274123.png

图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

2010030821483634.png

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

2010030821485068.png

3)查看结果

2010030821490296.png

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

 

 

本文转自悬魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2010/03/08/1681089.html,如需转载请自行联系原作者

你可能感兴趣的文章
kill命令详解
查看>>
Flask的信号
查看>>
润乾V4报表批量打印
查看>>
反模式
查看>>
PHP两种基础的算法:冒泡、快速排序法》》》望能够帮助到大家
查看>>
2018年6月10日笔记
查看>>
Service
查看>>
linux Git版本控制学习与Git服务器搭建
查看>>
JS截取字符串
查看>>
小米1S青春版适配小米手环
查看>>
MySQL 快速导入大量数据 资料收集
查看>>
Eclipse启动之一:外壳程序(百度空间迁移)
查看>>
使用CSplitterWnd实现拆分窗口(多视图显示)
查看>>
php 函数中静态变量的问题
查看>>
面向对象、匿名内部类
查看>>
WPF中ListView添加网格线
查看>>
python基础练习题(一)
查看>>
My Open Source Projects
查看>>
\r,\n,\r\n的区别和用法
查看>>
metabase实施文档
查看>>