本文共 8736 字,大约阅读时间需要 29 分钟。
这些代码全部写在和页面分离的代码页中(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 } } 本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2006/02/15/330853.html,如需转载请自行联系原作者