Kita sering menggunakan modal windows dalam interaksi program manusia-komputer, namun dalam pengembangan B/S, hal ini menjadi tidak mudah, meskipun hal ini juga dapat dicapai dengan menggunakan fungsi window.showModalDialog (lihat http://dotnet.aspx .cc/ShowDetail .aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4 ), tetapi kebanyakan merepotkan untuk digunakan, dan Anda harus menggunakan Frameset untuk membuat dua jendela yang tidak berguna untuk mengembalikan nilainya. tepat!
Saya menemukan bahwa saya dapat mencoba menyematkan IFRAME di halaman awal, lalu menggunakan IFRAME untuk menampilkan halaman, dan mengatur IFRAME agar ditempatkan pada posisi absolut, dan mengatur Z-Index ke tertinggi 9999, sehingga halaman ini dapat dihamparkan pada halaman awal. Pada antarmuka, ketika jendela modal perlu ditampilkan, IFRAME ini akan ditampilkan. Ukuran IFRAME dapat diperluas untuk mencakup jendela awal, atau item utama dapat dicakup tujuannya adalah untuk mencegah kemungkinan terjadinya perubahan pada windows berikutnya. Ketika jendela yang ditampilkan oleh IFRAME perlu ditutup, sembunyikan saja IFRAME induknya. Selama percobaan sebenarnya, kami menemukan bahwa dialog IFRAME tidak dapat diubah di jendela anak. Oleh karena itu, kami juga perlu meletakkan IFRAME di DIV. Dengan mengontrol tampilan DIV, kami dapat mengontrol tampilan atau penyembunyian jendela . Tapi kenapa tidak menggunakan DIV untuk menampilkan jendela secara langsung? Ada dua alasan: 1. DIV tidak bisa memblokir kontrol Dropdownlist di belakangnya, tapi IFRAME bisa. 2. Tidak mudah untuk menempatkan konten di jendela ke dalam halaman web terpisah, dan penggunaannya kembali buruk.
Berikut ini adalah kodenya. Kode klien dan server digunakan untuk menampilkan dan menyembunyikan:
WebForm1.aspx
<%@ Page Language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WSGUI1.WebForm1 " %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisi//EN" >
<HTML>
<KEPALA>
<title>Formulir Web1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Konten="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<skrip bahasa="javascript">
fungsi TampilkanLayer()
{
document.all.MyFormLayer.style.display='';
kembali salah;
}
fungsi SetURL(url)
{
dokumen.semua.IFRAME1.src=url;
}
</skrip>
</KEPALA>
<badan MS_POSITIONING="GridLayout">
<form id="Form1" metode="posting" runat="server">
<FONT muka="宋体">
<asp:DropDownList id="DropDownList1" style="Z-INDEX: 101; KIRI: 40 piksel; POSISI: absolut; ATAS: 208 piksel"
runat="server" Lebar="184px">
<asp:ListItem Value="TEST1">q</asp:ListItem>
<asp:ListItem Value="TEST2">w</asp:ListItem>
<asp:ListItem Value="TEST3">dan</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; KIRI: 360px; POSISI: absolut; ATAS: 336px">
<div id="MyFormLayer" style="DISPLAY: none;Z-INDEX: 103;LEFT: 16px;WIDTH: 408px;POSITION: absolute;TOP: 24px;HEIGHT: 304px">
<iframe scrolling="tidak" frameborder="0" width="100%" height="100%" id="IFRAME1" runat="server">
</iframe>
</div>
<asp:Button id="Button2" style="Z-INDEX: 104; KIRI: 256px; POSISI: absolut; ATAS: 336px" runat="server"
Teks="ASPXTest"></asp:Tombol>
</bentuk>
</tubuh>
</HTML>
WebForm1.aspx.cs
....
kelas publik WebForm1 : System.Web.UI.Page
{
dilindungi Sistem.Web.UI.WebControls.DropDownList DropDownList1;
dilindungi Sistem.Web.UI.HtmlControls.HtmlGenericControl IFRAME1;
dilindungi System.Web.UI.WebControls.Button Button2;
private void Page_Load(pengirim objek, System.EventArgs e)
{
//Masukkan kode pengguna di sini untuk menginisialisasi halaman
jika(!IsPostBack)
{
}
}
public static void CreateScript(System.Web.UI.Page halaman saya,string strScript,string ID)
{
string strscript="<bahasa skrip='javascript'>";
strskrip += strskrip;
strskrip += "</skrip>";
if(!halamansaya.IsStartupScriptRegistered(ID))
halaman saya.RegisterStartupScript(ID, strscript);
}
private void Button2_Click(pengirim objek, System.EventArgs e)
{
IFRAME1.Attributes.Add("src","WebForm2.aspx?NAME='China'");
CreateScript(Halaman,"ShowLayer();","TAMPILKAN");
}
}
WebForm2.aspx
<%@ Halaman Language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="WSGUI1.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisi//EN" >
<HTML>
<KEPALA>
<judul>Formulir Web2</judul>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Konten="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
<skrip bahasa="javascript">
fungsi sembunyikan()
{
parent.MyFormLayer.style.display = "tidak ada";
}
</skrip>
</KEPALA>
<badan MS_POSITIONING="GridLayout">
<form id = "Form2" metode = "posting" runat = "server">
<tabel border="0" width="100%" Cellspacing="0" cellpadding="0" bgcolor="#6887bb" height="100%"
id="table1" style="BORDER-TOP-STYLE: awal; BORDER-RIGHT-STYLE: awal; BORDER-LEFT-STYLE: awal; BORDER-BOTTOM-STYLE: awal">
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
<p align="center"><font color="#ffffff">Meniru efek jendela modal</font></p>
<p align="center"><input type="button" onclick="hide()" style="WIDTH: 80px" value="Klik untuk menutup">
<asp:Button id="Button1" runat="server" Text="ASPXTest"></asp:Button></p>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tabel>
</bentuk>
</tubuh>
</HTML>
Ruang nama
WebFom2.aspx.cs
WSGUI1
{
/// <ringkasan>
/// Ringkasan deskripsi WebForm2.
/// </ringkasan>
WebForm2 kelas publik : Sistem.Web.UI.Halaman
{
dilindungi System.Web.UI.WebControls.Button Button1;
private void Page_Load(pengirim objek, System.EventArgs e)
{
//Masukkan kode pengguna di sini untuk menginisialisasi halaman
jika(!IsPostBack)
{
Button1.Attributes.Add("onclick","hide()");
}
}
}