我有包含母版页的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;
因为隐藏字段位于用户控件中,并且代码无法获取对隐藏字段的引用。
有人可以帮助我让它发挥作用吗?
答案 0 :(得分:0)
如果你正在使用window.open(),你可以通过属性window.opener查看父窗口,它可以让你在父页面和弹出窗口之间进行通信。
如果您使用的是window.showModalDialog(),请参阅此问题的第二个答案:window.opener alternatives
答案 1 :(得分:0)
试试这个
window.opener.document.getElementById('<%= HiddenField1.ClientID %>').value = choice;