用JavaScript 弹出模式对话框 ,其实很简单,只需要调用showModalDialog这个函数就可以实现
下面是一段ASP.NET页面完整代码,它作为模式对话框的父窗口,其实现的功能是点击按钮后将TextBoxTestId和
HiddenUserId 两个控件的值通过查询字符串传递给模式对话框。这里要注意的是showModalDialog函数的第二个
参数,通过这个参数可以把父窗口的对象带给模式对话框,模式对话框可以通过window.dialogArguments这个属性获取到父窗口带入的参数,这里填写的参数是父窗口的window 对象。

<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">...
function btn_Ok_onclick() 
...{
var testId = document.getElementById("TextBoxTestId").value;
var userId = document.getElementById("HiddenUserId").value;
showModalDialog("OpenMessage.aspx?UserId="+userId
+ "&TestId=" + testId ,window,
'dialogwidth:450px;dialogheight:480px;help:0;center:yes;resizable:0;status:0;scroll:yes');
return(false);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default.aspx">HomePage</asp:HyperLink><br />
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/Default.aspx" Target="_blank">HomePageNewWindow</asp:HyperLink><br />
<asp:TextBox ID="TextBoxTestId" runat="server"></asp:TextBox>
<asp:Button ID="ButtonTestId" runat="server" Text="Button" OnClientClick="btn_Ok_onclick()" />
<asp:HiddenField ID="HiddenUserId" runat="server" />
</div>
</form>
</body>
</html>
下面是模式对话框窗体后台代码,这个很简单,就是将父窗口通过查询字符串带入的两个参数复制给OpenMessage窗体的相应控件。
public partial class OpenMessage : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
LabelUserId.Text = Request.QueryString["UserId"];
TextBoxTestId.Text = Request.QueryString["TestId"];
}
OpenMessage窗体点击确认按钮后要将其窗体中控件TextBoxtTestId的值带回给父窗口,通过如下
代码实现
<script language="javascript" type="text/javascript">
function btn_Ok_onclick() 
...{
var testId = document.getElementById("TextBoxTestId").value;
window.dialogArguments.document.getElementById("TextBoxTestId").value = testId;
window.close();
}
</script>这里可以看到,window.dialogArguments 实际上是前面父窗口调用时带入的父窗口的windows对象
所以对这个对象的document属性进行操作,就可以实现对话框子窗口到父窗口的参数传递,非常方便。
本文介绍了如何使用JavaScript的showModalDialog函数创建模式对话框,并详细讲解了如何在对话框中传递和接收父窗口的数据,包括ASP.NET页面的示例代码和对话框窗体的交互过程。
2万+

被折叠的 条评论
为什么被折叠?



