利用window对象的showModalDialog(url, name, "xxx,xxx,xxx,...")方法!假如要从子窗口中返回两个值回父窗口,在父窗口建立两TextBox控件如下:
用于接受子窗口的返回值。
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>

在父窗口的<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中。

子窗口中:
假如以一服务器端按钮控件触发子窗口向父窗口返回数据,按钮定义如下:
1<asp:button id="btnReturn" runat="server" Width="50px" Text="确定"></asp:button>
假如两待返回的值定义如下:(实际应用中在子窗口中根据需要确定其值)

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
posted on 2006-12-15 23:08  mswu  阅读(945)  评论(0)    收藏  举报