如何在代码后面的弹出窗口中使用JavaScript变量?

时间:2013-02-13 08:15:42

标签: javascript asp.net

我有包含母版页的ASP.NET Web应用程序。母版页包含内容页面。内容页面包含用户控件。用户控件包含Telerik网格及其上下文菜单。

我想点击网格上下文菜单中的项目并打开新的弹出模式窗口。在那个窗口中有下拉列表。我从下拉列表中选择一些选项,然后单击“确定”。我想从下拉列表中选择值,并在我的ASP.NET代码中使用它继续进行。

我尝试使用隐藏字段来存储下拉列表中的值,但它不起作用,因为我不确定应该放置哪个隐藏字段。

这是我的代码:

打开弹出窗口:

function ClientItemClicked(sender, eventArgs)
{
    if (eventArgs.get_item().get_value() == "excel")
    {
        var retVal = window.showModalDialog("ExportToExcelChoice.aspx", null, "dialogWidth: 400; dialogHeight: 200; center: yes; resizable: no;");
    }
}

单击“确定”关闭弹出窗口:

function ReturnValue() {
    var choice = document.getElementById("DropDownList1").value;
    if ((window.opener != null) && (!window.opener.closed)) {
        window.opener.document.getElementById("HiddenField1").value = choice;
    }
    window.close();
}

这条线失败了:

window.opener.document.getElementById("HiddenField1").value = choice;

因为隐藏字段位于用户控件中,并且代码无法获取对隐藏字段的引用。

有人可以帮助我让它发挥作用吗?

2 个答案:

答案 0 :(得分:0)

如果你正在使用window.open(),你可以通过属性window.opener查看父窗口,它可以让你在父页面和弹出窗口之间进行通信。

如果您使用的是window.showModalDialog(),请参阅此问题的第二个答案:window.opener alternatives

答案 1 :(得分:0)

试试这个

window.opener.document.getElementById('<%= HiddenField1.ClientID %>').value = choice;