غالبًا ما نستخدم النوافذ المشروطة في تفاعل البرامج بين الإنسان والحاسوب، ولكن في تطوير B/S، يصبح هذا ليس سهلاً، على الرغم من أنه يمكن تحقيقه أيضًا باستخدام وظيفة window.showModalDialog (انظر http://dotnet.aspx .cc/ShowDetail .aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4 )، ولكن معظمها مزعج في الاستخدام، ويجب عليك استخدام Frameset لإنشاء نافذتين عديمتي الفائدة من أجل إرجاع القيمة. دقيق!
لقد وجدت أنه يمكنني محاولة تضمين IFRAME في الصفحة الأولية، ثم استخدام IFRAME لعرض الصفحة، وتعيين IFRAME ليتم وضعه في موضع مطلق، وتعيين مؤشر Z على أعلى 9999، بحيث يمكن تراكب هذه الصفحة على الصفحة الأولية، عندما يلزم عرض نافذة مشروطة، يمكن توسيع حجم IFRAME لتغطية النافذة الأولية، أو يمكن تغطية العناصر الرئيسية والغرض من ذلك هو منع إمكانية إجراء تغييرات في النوافذ اللاحقة. عندما يلزم إغلاق النافذة المعروضة بواسطة IFRAME، ما عليك سوى إخفاء IFRAME الأصلي الخاص بها. أثناء التجربة الفعلية، وجدنا أنه لا يمكن تغيير مربع حوار IFRAME في النافذة الفرعية. لذلك، نحتاج أيضًا إلى وضع IFRAME في DIV، ومن خلال التحكم في عرض DIV، يمكننا التحكم في مظهر النافذة أو إخفائها . ولكن لماذا لا تستخدم DIV لعرض النافذة مباشرة؟ هناك سببان: 1. لا يمكن لـ DIV حظر عنصر التحكم في القائمة المنسدلة خلفه، ولكن IFRAME يمكنه ذلك. 2. ليس من السهل وضع المحتوى الموجود في النافذة في صفحة ويب منفصلة، كما أن إمكانية إعادة الاستخدام ضعيفة.
ما يلي هو التعليمات البرمجية التي يتم استخدامها للعرض والإخفاء:
WebForm1.aspx
<%@ لغة الصفحة = "c#" Codebehind = "WebForm1.aspx.cs" AutoEventWireup = "false" Inherits = "WSGUI1.WebForm1". "%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<أتش تي أم أل>
<الرأس>
<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 ">
<لغة البرمجة = "جافا سكريبت">
الدالة ShowLayer()
{
document.all.MyFormLayer.style.display='';
عودة كاذبة.
}
وظيفة SetURL(url)
{
document.all.IFRAME1.src=url;
}
</script>
</الرأس>
<body MS_POSITIONING="GridLayout">
<form id="Form1"method="post" runat="server">
<وجه الخط = "宋 体">
<asp:DropDownList id = "DropDownList1" style = "Z-INDEX: 101؛ اليسار: 40 بكسل؛ الموضع: مطلق؛ الأعلى: 208 بكسل"
عرض runat = "الخادم" = "184 بكسل">
<asp:ListItem Value="TEST1">ف</asp:ListItem>
<asp:ListItem Value="TEST2">ث</asp:ListItem>
<asp:ListItem Value="TEST3">ه</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: 102؛ اليسار: 360 بكسل؛ الموضع: مطلق؛ الأعلى: 336 بكسل">
<div id="MyFormLayer" style ="العرض: لا شيء;مؤشر Z: 103;اليسار: 16px;العرض: 408px;الموقع: مطلق;الأعلى: 24px;الارتفاع: 304px">
<iframe التمرير = "لا" إطار الحدود = "0" العرض = "100٪" الارتفاع = "100٪" معرف = "IFRAME1" runat = "الخادم">
</iframe>
</div>
<asp:Button id = "Button2" style = "Z-INDEX: 104؛ اليسار: 256 بكسل؛ الموضع: مطلق؛ الأعلى: 336 بكسل" runat = "الخادم"
Text="ASPXTest"></asp:Button>
</النموذج>
</الجسم>
</HTML>
WebForm1.aspx.cs
....
الطبقة العامة WebForm1 : System.Web.UI.Page
{
محمي System.Web.UI.WebControls.DropDownList DropDownList1;
System.Web.UI.HtmlControls.HtmlGenericControl IFRAME1 محمي؛
System.Web.UI.WebControls.Button Button2 محمي؛
Page_Load باطلة خاصة (مرسل الكائن، System.EventArgs e)
{
// ضع رمز المستخدم هنا لتهيئة الصفحة
إذا (!IsPostBack)
{
}
}
إنشاء نص ثابت عام (System.Web.UI.Page mypage، سلسلة strScript، معرف السلسلة)
{
سلسلة strscript = "<script language='javascript'>";
strscript += strScript;
strscript += "</script>";
إذا (!mypage.IsStartupScriptRegistered(ID))
mypage.RegisterStartupScript(ID, strscript);
}
باطلة خاصة Button2_Click (مرسل الكائن، System.EventArgs e)
{
IFRAME1.Attributes.Add("src"،"WebForm2.aspx?NAME='China'");
CreateScript(Page"،ShowLayer();"،"SHOW")؛
}
}
WebForm2.aspx
<%@ لغة الصفحة = "c#" Codebehind = "WebForm2.aspx.cs" AutoEventWireup = "false" Inherits = "WSGUI1.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<أتش تي أم أل>
<الرأس>
<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 ">
<لغة البرمجة = "جافا سكريبت">
إخفاء الوظيفة ()
{
parent.MyFormLayer.style.display = "none";
}
</script>
</الرأس>
<body MS_POSITIONING="GridLayout">
<form id="Form2"method="post" runat="server">
<حدود الجدول = "0" العرض = "100%" تباعد الخلايا = "0" خلية الحشو = "0" bgcolor = "#6887bb" الارتفاع = "100٪"
id = "table1" style ="BORDER-TOP-STYLE: البداية؛ BORDER-RIGHT-STYLE: البداية؛ BORDER-LEFT-STYLE: البداية؛ BORDER-BOTTOM-STYLE: البداية">
<تر>
<TD>
</TD>
<TD>
</TD>
<TD>
</TD>
</tr>
<تر>
<TD>
</TD>
<TD>
<p align="center"><font color="#ffffff">تقليد تأثير النافذة المشروطة</font></p>
<p align="center"><input type="button" onclick="hide()" style="WIDTH: 80px" value="انقر للإغلاق">
<asp:Button id="Button1" runat="server" Text="ASPXTest"></asp:Button></p>
</TD>
<TD>
</TD>
</tr>
<تر>
<TD>
</TD>
<TD>
</TD>
<TD>
</TD>
</tr>
</الجدول>
</النموذج>
</الجسم>
</HTML>
مساحة الاسم
WebFom2.aspx.cs
WSGUI1
{
/// <الملخص>
/// وصف موجز لـ WebForm2.
/// </الملخص>
الفئة العامة WebForm2: System.Web.UI.Page
{
System.Web.UI.WebControls.Button Button1 المحمي؛
Page_Load باطلة خاصة (مرسل الكائن، System.EventArgs e)
{
// ضع رمز المستخدم هنا لتهيئة الصفحة
إذا (!IsPostBack)
{
Button1.Attributes.Add("onclick",hide()");
}
}
}