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

时间:2014-09-23 19:00:52

标签: javascript asp.net master-pages

我在点击页面上的按钮(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存在于母版页中,因此无法将数据从弹出窗口传递到父页面,就像在互联网上的几个页面上提到的那样。

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

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

1 个答案:

答案 0 :(得分:0)

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

尝试使用弹出窗口中需要的字段创建一个。将它的风格设置为&#34;显示:无&#34;。因此,您将拥有一个带有按钮和文本框的隐藏字段。

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

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