新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → asp.net中窗口相关操作总结(javascript) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3675 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: asp.net中窗口相关操作总结(javascript) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18407
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 asp.net中窗口相关操作总结(javascript)


    发信人: GumPGZ (像阿甘一样奔跑), 信区: DotNET        
    标  题: asp.net中窗口相关操作总结(javascript)
    发信站: BBS 水木清华站 (Tue Jul 30 11:08:53 2002)

    我对javascript并不熟,但是最近的项目用到很多,现把他总结如下,也不算什么技巧,
    就当留个备案吧

    这些代码全部写在和页面分离的代码页中(codebehind),如果要嵌入到*.aspx页面,可能
    会出现问题.

    1.打开新窗口
      这个简单:Response.Write(@"<script
        language='javascript'>window.open('url');</script>");
    2.关闭窗口
      //关闭当前窗口,并提示用户时候关闭,yes关闭,no退出
      Response.Write(@"<script language='javascript'>window.close();</script>");
      //延迟关闭窗口(下面代码表示2秒后关闭,无需确认)
      Response.Write(@"<script
        language='javascript'>setTimeout('self.close()',2000);</script>");
    3.延迟时间
      这个和上面的没有多少区别.我用到的情况是,在用户操作完毕给出提示,"n秒后,页面
        转向"之类的只需去掉2重的Self.close()即可
      Response.Write(@"<script
        language='javascript'>setTimeout('',2000);</script>");
    4.弹出提示或警告窗口
      Response.Write(@"<script language='javascript'>alert('添加成功,2秒钟后页面
        将自动跳');</script>");
    5.刷新其他页面
      这个用到的情况还是不少.比如在B页面对数据更新和修改,另一页面A要保持最新数据
      给客户,这是就要在对B操作完毕的情况下对A进行刷新:
      Response.Write(@"<script language='javascript'>window.opener.location.
        href='./default.aspx'</script>") ;
    6.页面跳转
      有时候在学要给出提示的情况下进行页面跳转,不能使用Response.Redirect("url");
      比如,当客户操作完毕,单击按钮提交,弹出提示框(使用上面3和4),如果使用了
        Response.Redirect("url");
      那么页面将不给出提示,页就是3和4没有起作用就直接转向了.
      如果你是下面的操作过程:
      1).Response.Write(@"<script language='javascript'>alert('添加成功,2秒钟后页
        面将自动跳');</script>");
      2).Response.Write(@"<script
        language='javascript'>setTimeout('',2000);</script>");
      3).页面转向:
        Response.Write("<meta http-equiv='refresh'
        content='0;URL=./default.aspx'>");
        //这个我不知道用javascript怎么实现,熟悉的轻补充一下
    7.窗口传制问题
      这个问题比较烦,打开模态窗口(ShowModelDialog)我还没有实现,请各位补充.
      具体情况是这样的,比如说A打开一个新窗口B,当用户对B操作完毕后,我们获得必要的
      数据,自动将其赋给A中的TextBox等控件,这个过程是在客户端完成的.就像发送邮件时,
      需要从地址本中选取,然后将选中的发送地址传回来.
      1).在A中加入如下代码,打开一个新窗口B.
         Response.Write(window.">@"window.
            open('B.aspx','','toolbar=no,menubar=no,status=yes,location=no,
            resizable=no,scrollbars=no,width=500,height=350');</script>");
      2).对B操作完毕,获得必要数据tmpStr,然后将其赋值给A中的TextBox1
         Response.Write(@"<script
            language='javascript'>opener.document.all.TextBox1.value
             ='" +tmpStr+"';</script>");
      注意:这个过程是在客户单用javascript完成的,因此我们不能按照服务端的编程习惯
    以及不能使用web服务控件的服务端属性进行操作.TextBox1是一个web服务控件,
    其id为TextBox1,A页面被服务器解析为html,通过浏览器浏览,TextBox1就变成了
    纯html控件,我们这里用javascript操作的也就是html控件,因此赋值使用的是
    TextBox1的value属性而不是Text属性.另外,web服务器控件的id被解析成html后,
    id有时会变,我们只要注意使用服务器解析后的id就成了,在浏览器中右键->查看源文件
    即可得到

      对第七种操作情况最好使用打开模态窗口windows.ShowModelDialog(),但是比较麻烦,
    哦还没有实现.


    接上:

    调整本窗口大小和位置
    Response.Write("<script>window.resizeTo(500,400);</script>");
    Response.Write("<script>window.moveTo(300,200);</script>");


    接上:

    补:使用模态窗口传值

    主要代码如下:
    a.aspx and a.aspx.cs

    <%@ Page language="c#" Codebehind="a.aspx.cs" AutoEventWireup="false"
    Inherits="Genesis02.a" %>
    <HTML>
        <HEAD>
            <title>a</title>
            <SCRIPT language="javascript">
                var str;

                function pop(url)

                {
                    var myDialog = document.a.TBoxType.value;

                    if (window.showModalDialog)
                    {
                        str=window.showModalDialog(url,myDialog,"dialogHeight:
    300px; dialogWidth: 500px;center: yes; help: no;resizable: yes; status:
    no;");
                        if (typeof(str) != "undefined")
                        {
                            document.a.TBoxType.value = str;
                        }
                    }
                }
            </SCRIPT>
        </HEAD>
        <body MS_POSITIONING="GridLayout">
            <form id="a" method="post" runat="server">
                <asp:textbox id="TBoxType"
    runat="server"></asp:textbox><asp:button id="BtnGetType" Runat="server"
    Text="Open"></asp:button>
            </form>
        </body>
    </HTML>
    __________________________________________________________________

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    namespace Genesis02
    {
        /// <summary>
        /// a 的摘要说明。
        /// </summary>
        public class a : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.TextBox TBoxType;
            protected System.Web.UI.WebControls.Button BtnGetType;

            private void Page_Load(object sender, System.EventArgs e)
            {
                if (!IsPostBack)

                {
                    BtnGetType.Attributes["onclick"] = "pop('c.aspx');return
    false;";
                }
            }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
                //
                InitializeComponent();
                base.OnInit(e);
            }

            /// <summary>
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {
                this.Load += new System.EventHandler(this.Page_Load);

            }
            #endregion
        }
    }


    #################################################################
    b.aspx and b.aspx.cs

    <%@ Page language="c#" Codebehind="b.aspx.cs" AutoEventWireup="false"
    Inherits="Genesis02.b" %>
    <HTML>
        <HEAD>
            <title>b</title>
            <SCRIPT language="javascript">
            function closeme()
            {

                //top.returnValue =
    window.document.all.LBoxRFAContent.options[window.document.all.LBoxRFAContent
    .selectedindex].value;
                top.returnValue = document.getElementById("TBoxValue").value;
                top.close();
            }

            function Body_Load()
            {
                if(window.dialogArguments != null) {
                    window.document.getElementById("TBoxValue").value =
    window.dialogArguments;
                }
            }
            </SCRIPT>
        </HEAD>
        <body MS_POSITIONING="GridLayout" onload="Body_Load()">
            <form id="b" method="post" runat="server">
                <asp:Button id="BtnClose" style="Z-INDEX: 101; LEFT: 152px;
    POSITION: absolute; TOP: 131px" runat="server" Text="Close me"></asp:Button>

                <asp:TextBox id="TBoxValue" style="Z-INDEX: 102; LEFT: 149px;
    POSITION: absolute; TOP: 69px" runat="server"></asp:TextBox>
            </form>
        </body>
    </HTML>

    __________________________________________________________________
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    namespace Genesis02
    {
        /// <summary>
        /// b 的摘要说明。
        /// </summary>
        public class b : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.TextBox TBoxValue;
            protected System.Web.UI.WebControls.Button BtnClose;


            private void Page_Load(object sender, System.EventArgs e)
            {
                if (!IsPostBack)
                {
                    BtnClose.Attributes["onclick"] = "closeme();return false;";
                }
            }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
                //
                InitializeComponent();
                base.OnInit(e);
            }

            /// <summary>
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {
                this.Load += new System.EventHandler(this.Page_Load);

            }
            #endregion
        }
    }

    #######################################################################

    c.aspx and c.asp.cs

    <%@ Page language="c#" Codebehind="c.aspx.cs" AutoEventWireup="false"
    Inherits="Genesis02.c" %>
    <HTML>

        <HEAD>
            <TITLE>c</TITLE>
        </HEAD>
        <frameset rows="0,*">
            <frame src="about:blank">
            <frame src="b.aspx">
        </frameset>
    </HTML>


    ____________________________________________________

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    namespace Genesis02
    {

        /// <summary>
        /// c 的摘要说明。
        /// </summary>
        public class c : System.Web.UI.Page
        {
            private void Page_Load(object sender, System.EventArgs e)
            {
                // 在此处放置用户代码以初始化页面
            }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
                //
                InitializeComponent();
                base.OnInit(e);
            }

            /// <summary>
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {
                this.Load += new System.EventHandler(this.Page_Load);
            }
            #endregion
        }
    }

    #############################################################################

    c.aspx and c.asp.cs

    <%@ Page language="c#" Codebehind="c.aspx.cs" AutoEventWireup="false"
    Inherits="Genesis02.c" %>
    <HTML>
        <HEAD>
            <TITLE>c</TITLE>
        </HEAD>
        <frameset rows="0,*">
            <frame src="about:blank">
            <frame src="b.aspx">
        </frameset>
    </HTML>


    ____________________________________________________

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    namespace Genesis02
    {
        /// <summary>
        /// c 的摘要说明。
        /// </summary>
        public class c : System.Web.UI.Page
        {
            private void Page_Load(object sender, System.EventArgs e)
            {
                // 在此处放置用户代码以初始化页面
            }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
                //
                InitializeComponent();
                base.OnInit(e);
            }

            /// <summary>
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {
                this.Load += new System.EventHandler(this.Page_Load);
            }
            #endregion
        }
    }


    以上是使用模态窗口的所有主要代码



    --
    用户跟着SUN本来是为了去打倒微软,跑着跑着,猛一抬头,发现SUN旗帜上
    赫然打上了$的标志,这意味着原来只不过有一个向自己腰包里掏钱的微软,
    而现在又冒出了一个。
                            ----------------郁闷


    ※ 来源:·BBS 水木清华站 smth.edu.cn·[FROM: 202.112.14.111]
    上一篇
    返回上一页
    回到目录
    回到页首
    下一篇


       收藏   分享  
    顶(0)
      




    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/9 2:26:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/21 1:07:47

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms