在ASP.NET中,将数据从弹出窗口传递到不使用母版页中的Javascript的父窗口

Pass data from popup window to parent window not working with Javascript in master page in ASP.NET

本文关键字:窗口 母版页 Javascript ASP 数据 NET      更新时间:2023-09-26

我正在打开一个模式窗口,点击页面上的按钮(ABC.aspx)。代码如下

protected void Button1_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), "ffff","myFunction();", true);
}

此方法正在调用一个javascript函数myFunction()。此javascript代码存在于Site.master文件中。代码如下

<head runat="server">
    <title></title>
    <script type="text/javascript">
    function myFunction() {
        var myWindow = 
            window.showModalDialog("XYModalWindow.aspx", object, "width=100, height=50");
    }
    </script>
    <link href="~/SomeStyleSheet.css" type="text/css" rel="Stylesheet" />
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>

这个javascript代码打开了一个弹出窗口,我在其中保存数据库中的一些记录。

目标:从弹出窗口将数据保存到数据库后,我必须将其填充到父窗口(即ABS.aspx)中。

问题:由于我的javascript出现在主页面中,我无法像互联网上几个页面上提到的那样,从弹出窗口将数据传递到父页面。

我尝试将数据保存在弹出窗口中的会话变量中,并在父窗口中进行访问,但这似乎不起作用。

注意:我想在不使用任何额外事件的情况下自动在父窗口中获取数据。我的意思是,弹出窗口数据被保存,窗口被关闭,然后它应该自动在父窗口中显示数据(没有额外的按钮点击)。

首先,看起来您有一个调用客户端代码的服务器端按钮。这有必要吗?为什么不使用web服务保存到数据库,然后在onSuccess回调函数中更新页面上的显示?不需要回发,也不必担心从代码背后的事件处理程序调用客户端代码。

尝试在弹出窗口中创建所需的字段。将其样式设置为"display:none"。例如,您将有一个带有按钮和文本框的隐藏字段。

然后,创建一个事件处理程序来显示该div-因此,当有人单击某个按钮时,使用jQuery将该div转换为一个对话框并显示它。然后,当某人单击对话框内部的按钮时,您可以调用web服务来更新数据库,然后相应地更新页面(例如,如果成功,则执行X,如果失败,则执行Y)。由于字段在加载时是页面的一部分,因此它们将具有ID,您可以对它们的数据执行任何操作。

Jquery对话框文档:http://jqueryui.com/dialog/