Freqüentemente usamos janelas modais na interação de programas humano-computador, mas no desenvolvimento B/S, isso não se torna fácil, embora também possa ser alcançado usando a função window.showModalDialog (consulte http://dotnet.aspx .cc/ShowDetail .aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4 ), mas a maioria deles é difícil de usar e você precisa usar o Frameset para criar duas janelas inúteis para retornar o valor. preciso!
Descobri que posso tentar incorporar um IFRAME na página inicial e, em seguida, usar o IFRAME para exibir uma página e definir o IFRAME para ser colocado em uma posição absoluta e definir o Z-Index para o maior 9999, de modo que esta página pode ser sobreposta à página inicial. Na interface, quando uma janela modal precisa ser exibida, este IFRAME é exibido. O tamanho do IFRAME pode ser expandido para cobrir a janela inicial ou os itens principais podem ser cobertos. o objetivo é evitar a possibilidade de alterações nas janelas subsequentes. Quando a janela exibida pelo IFRAME precisar ser fechada, basta ocultar seu IFRAME pai. Durante o experimento real, descobrimos que a caixa de diálogo do IFRAME não pode ser alterada na janela filho. Portanto, também precisamos colocar o IFRAME em um DIV. Controlando a exibição do DIV, podemos controlar a aparência ou ocultação da janela. . Mas por que não usar DIV para exibir a janela diretamente. Há dois motivos: 1. DIV não pode bloquear o controle Dropdownlist por trás dele, mas IFRAME pode. 2. Não é fácil colocar o conteúdo da janela em uma página da web separada e a capacidade de reutilização é baixa.
O código a seguir é usado para exibir e ocultar o código do cliente e do servidor:
WebForm1.aspx
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WSGUI1.WebForm1 "%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<CABEÇA>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<linguagem script="javascript">
função ShowLayer()
{
document.all.MyFormLayer.style.display='';
retornar falso;
}
função DefinirURL(url)
{
document.all.IFRAME1.src=url;
}
</script>
</HEAD>
<corpo MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="servidor">
<FONT face="宋体">
<asp:DropDownList id="DropDownList1" style="Z-INDEX: 101; ESQUERDA: 40px; POSIÇÃO: absoluta; SUPERIOR: 208px"
runat="servidor" Largura="184px">
<asp:ListItem Value="TEST1">q</asp:ListItem>
<asp:ListItem Value="TEST2">w</asp:ListItem>
<asp:ListItem Value="TEST3">e</asp:ListItem>
<asp:ListItem Value="TEST4">r</asp:ListItem>
</asp:DropDownList></FONT> <input type="button" name="MyButton" value="TEST" id="MyButton" onclick="ShowLayer();SetURL('WebForm2.aspx')" style= "Z-INDEX: 102; ESQUERDA: 360px; POSIÇÃO: absoluta; SUPERIOR: 336px">
<div id="MyFormLayer" style="DISPLAY: nenhum;Z-INDEX: 103;ESQUERDA: 16px;LARGURA: 408px;POSIÇÃO: absoluta;TOP: 24px;ALTURA: 304px">
<iframe scrolling="no" frameborder="0" width="100%" height="100%" id="IFRAME1" runat="server">
</iframe>
</div>
<asp:Button id="Button2" style="Z-INDEX: 104; ESQUERDA: 256px; POSIÇÃO: absoluta; SUPERIOR: 336px" runat="servidor"
Text="ASPXTest"></asp:Button>
</form>
</body>
</HTML>
WebForm1.aspx.cs
....
classe pública WebForm1: System.Web.UI.Page
{
System.Web.UI.WebControls.DropDownList protegido DropDownList1;
System.Web.UI.HtmlControls.HtmlGenericControl protegido IFRAME1;
System.Web.UI.WebControls.Button protegido Button2;
private void Page_Load (remetente do objeto, System.EventArgs e)
{
//Coloque aqui o código do usuário para inicializar a página
if(!IsPostBack)
{
}
}
public static void CreateScript (System.Web.UI.Page minha página, string strScript, string ID)
{
string strscript="<linguagem de script='javascript'>";
strscript += strScript;
strscript += "</script>";
if(!mypage.IsStartupScriptRegistered(ID))
minhapágina.RegisterStartupScript(ID,strscript);
}
private void Button2_Click (remetente do objeto, System.EventArgs e)
{
IFRAME1.Attributes.Add("src","WebForm2.aspx?NAME='China'");
CreateScript(Página,"ShowLayer();","MOSTRAR");
}
}
WebForm2.aspx
<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="WSGUI1.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<CABEÇA>
<title>WebForm2</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<linguagem script="javascript">
função ocultar()
{
parent.MyFormLayer.style.display = "nenhum";
}
</script>
</HEAD>
<corpo MS_POSITIONING="GridLayout">
<form id="Form2" method="post" runat="servidor">
<table border="0" width="100%" cellpacing="0" cellpadding="0" bgcolor="#6887bb" height="100%"
id="table1" style="BORDER-TOP-STYLE: início; BORDER-RIGHT-STYLE: início; BORDER-LEFT-STYLE: início; BORDER-BOTTOM-STYLE: início">
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p align="center"><font color="#ffffff">Imita o efeito de janela modal</font></p>
<p align="center"><input type="button" onclick="hide()" style="WIDTH: 80px" value="Clique para fechar">
<asp:Button id="Button1" runat="server" Text="ASPXTest"></asp:Button></p>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tabela>
</form>
</body>
</HTML>
Namespace
WebFom2.aspx.cs
WSGUI1
{
/// <resumo>
/// Descrição resumida do WebForm2.
/// </sumário>
classe pública WebForm2: System.Web.UI.Page
{
System.Web.UI.WebControls.Button protegido Button1;
private void Page_Load (remetente do objeto, System.EventArgs e)
{
//Coloque aqui o código do usuário para inicializar a página
if(!IsPostBack)
{
Button1.Attributes.Add("onclick","ocultar()");
}
}
}