利用window对象的showModalDialog(url, name, "xxx,xxx,xxx,...")方法!假如要从子窗口中返回两个值回父窗口,在父窗口建立两TextBox控件如下:
用于接受子窗口的返回值。
在父窗口的<head></head>中添加如下脚本:
子窗口中:
假如以一服务器端按钮控件触发子窗口向父窗口返回数据,按钮定义如下:

private string var1="hello";
private string var2="sunshine";
后台代码中注册向客户端输出的javascript程序块,由按钮触发调用:
private void RegisterReturnValue()
{
if(!IsClientScriptBlockRegistered("clientScript"))
{
string str ="<script>\r\n";
str+="function ReturnThis(){\r\n";
str+="var retArr = new Array();\r\n";
str+="retArr[0] =arguments[0];\r\n";
str+="retArr[1] = arguments[1];\r\n";
str+="window.returnValue = retArr;\r\n";
str+="self.close();\r\n";
str+=" }\r\n";
str+="</script>";

RegisterClientScriptBlock("clientScript",str);
}
}
在Page_Load(object sender, System.EventArgs e)中向按钮的Attributes中注册javascript调用:
btnReturn.Attributes.Add("onclick","ReturnThis('"+var1.Trim()+"','"+var2.Trim()+"')");
至此完成大部分核心的工作,点击子窗口的按钮便会在父窗口的两TextBox中出现 hello sunshine!
此版本基于asp.net
用于接受子窗口的返回值。
1
<asp:textbox id="var1" runat="server" Width="248px" ReadOnly="True"></asp:textbox>
2
<asp:textbox id="var2" runat="server" Width="248px" ReadOnly="True"></asp:textbox>
<asp:textbox id="var1" runat="server" Width="248px" ReadOnly="True"></asp:textbox>2
<asp:textbox id="var2" runat="server" Width="248px" ReadOnly="True"></asp:textbox>在父窗口的<head></head>中添加如下脚本:
1
<script language="javascript">
2
function showChild(){
3
var url = "child.aspx";
4
var width=600;
5
var height=500;
6
var form = document.all.Form1;
7
var retValue = window.showModalDialog(url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;status:yes;directories:yes;scrollbars:yes;Resizable=yes;");
8
if( retValue != null ){
9
form.var1.value = retValue[0];
10
form.var2.value = retValue[2];
11
}
12
}
13
</script>
其中第7行把子窗口的返回值保存在数组retValue中。
<script language="javascript">2
function showChild(){3
var url = "child.aspx";4
var width=600;5
var height=500;6
var form = document.all.Form1;7
var retValue = window.showModalDialog(url, "", "dialogWidth:"+width+"px;dialogHeight:"+height+"px;status:yes;directories:yes;scrollbars:yes;Resizable=yes;");8
if( retValue != null ){9
form.var1.value = retValue[0];10
form.var2.value = retValue[2];11
} 12
}13
</script>子窗口中:
假如以一服务器端按钮控件触发子窗口向父窗口返回数据,按钮定义如下:
1
<asp:button id="btnReturn" runat="server" Width="50px" Text="确定"></asp:button>
假如两待返回的值定义如下:(实际应用中在子窗口中根据需要确定其值)
<asp:button id="btnReturn" runat="server" Width="50px" Text="确定"></asp:button>
private string var1="hello";
private string var2="sunshine";
private void RegisterReturnValue()
{
if(!IsClientScriptBlockRegistered("clientScript"))
{
string str ="<script>\r\n";
str+="function ReturnThis(){\r\n";
str+="var retArr = new Array();\r\n";
str+="retArr[0] =arguments[0];\r\n";
str+="retArr[1] = arguments[1];\r\n";
str+="window.returnValue = retArr;\r\n";
str+="self.close();\r\n";
str+=" }\r\n";
str+="</script>";
RegisterClientScriptBlock("clientScript",str);
}
}
btnReturn.Attributes.Add("onclick","ReturnThis('"+var1.Trim()+"','"+var2.Trim()+"')"); 至此完成大部分核心的工作,点击子窗口的按钮便会在父窗口的两TextBox中出现 hello sunshine!
此版本基于asp.net

浙公网安备 33010602011771号