您的位置:首页 > 其它

窗口相关操作总结

2006-09-19 17:33 399 查看
这些代码全部写在和页面分离的代码页中(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


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: