65.9K
CodeProject 正在变化。 阅读更多。
Home

带多个参数的模态弹出对话框窗口

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (36投票s)

2003年9月14日

1分钟阅读

viewsIcon

326297

传递和返回多个参数的模态弹出对话框窗口

引言

本文展示了一个带有多个参数的模态弹出对话框。该示例创建父页面和子页面。父页面以模态方式调用子页面,并向子页面传递多个值。子页面显示传递的值,允许编辑,然后在完成时将更改后的值返回给父页面。子页面仅对父页面是模态的。要使子页面对整个桌面是模态的,请参阅下面的注意事项。

范围

ASP, ASP.NET, C#, VB.NET, Visual Basic, Java

步骤

  1. 在 Visual Studio 中打开一个新的 Web 项目
  2. 创建两个新的 WebForm 页面,命名为 ParentWebFormChildWebForm
  3. 打开 ParentWebForm 的 HTML 表面
  4. 找到黄色线条
  5. 删除除了黄色线条之外的所有代码
  6. 在现有的黄色线条下方插入以下 HTML 代码
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        <HEAD>
            <title>Parent Webform</title>
            <script language="javascript">
    function OpenChild() 
    {
        var ParmA = retvalA.value;
        var ParmB = retvalB.value;
        var ParmC = retvalC.value;
        var MyArgs = new Array(ParmA, ParmB, ParmC);
        var WinSettings = "center:yes;resizable:no;dialogHeight:300px"
        //ALTER BELOW LINE - supply correct URL for Child Form
    
        var MyArgs = window.showModalDialog(
       "https:///ModalWin/ChildWebForm.aspx", MyArgs, WinSettings);
        if (MyArgs == null)
        {
            window.alert(
              "Nothing returned from child. No changes made to input boxes")
        }
        else
        {
            retvalA.value=MyArgs[0].toString();
            retvalB.value=MyArgs[1].toString();
            retvalC.value=MyArgs[2].toString();
        }
    }
            </script>
        </HEAD>
        <body>
            <P><INPUT id="retvalA" type="text" value="AAA"></P>
            <P><INPUT id="retvalB" type="text" value="BBB"></P>
            <P><INPUT id="retvalC" type="text" value="CCC"></P>
            <P><BUTTON onclick="OpenChild()" type="button">
                    Open Child Window</BUTTON>
            </P>
        </body>
    </HTML>
  7. 在上面的代码中,找到写着 //ALTER BELOW LINE 的那一行
  8. 提供 ChildWebform 的正确 URL
  9. 打开 ChildWebForm 的 HTML 表面
  10. 找到黄色线条
  11. 删除除了黄色线条之外的所有代码
  12. 在现有的黄色线条下方插入以下 HTML 代码
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        <HEAD>
            <TITLE>Child Webform</TITLE>
            <script language="javascript">
    function Done() {
        var ParmA = tbParamA.value;
        var ParmB = tbParamB.value;
        var ParmC = tbParamC.value;
        var MyArgs = new Array(ParmA, ParmB, ParmC);
        window.returnValue = MyArgs;
        window.close();
    }
    function doInit() {
        var ParmA = "Aparm";
        var ParmB = "Bparm";
        var ParmC = "Cparm";
        var MyArgs = new Array(ParmA, ParmB, ParmC);
        MyArgs =  window.dialogArguments;
        tbParamA.value = MyArgs[0].toString();
        tbParamB.value = MyArgs[1].toString();
        tbParamC.value = MyArgs[2].toString();
    }
            </script>
        </HEAD>
        <BODY onload="doInit()">
            <P>Param A:<INPUT id="tbParamA" TYPE="text"></P>
            <P>Param B:<INPUT ID="tbParamB" TYPE="text"></P>
            <P>Param C:<INPUT ID="tbParamC" TYPE="text"></P>
            <BUTTON onclick="Done()" type="button">OK</BUTTON>
        </BODY>
    </HTML>
    
  13. 将项目的启动页面设置为 Parent Webform
  14. 运行项目。

最后说明

要使子页面对整个桌面是模态的,您需要在子页面中添加代码,使用 <body onblur="this.focus">

© . All rights reserved.