ASP.NET:使用 JavaScript 以编程方式在 window.opener 中触发服务器端事件
-
15-11-2019 - |
题
我有一个 DropDownList,它在其 OnSelectedIndexChanged 事件中触发一些服务器端数据绑定。
<asp:DropDownList ID="ddlGroup" runat="server"
AutoPostBack="True" OnSelectedIndexChanged="SelectGroup" />
在页面的其他地方,一些 JavaScript 会打开一个弹出窗口。当弹出窗口填写并提交后,我想使用 JavaScript 来触发它 OnSelectedIndexChanged
开启页面中的事件。我发现其他一些代码执行类似的操作:
if (window.opener != null ) {
var cf = window.opener.document.forms['aspnetForm'];
if (!cf) {
cf = window.opener.document.aspnetForm;
}
cf.__EVENTTARGET.value = "prAdded";
cf.__EVENTARGUMENT.value = "winClosed";
cf.submit();
}
我认为这就是我正在寻找的内容,但我不确定 EVENTTARGET 和 EVENTARGUMENT 部分中应该包含什么,或者即使我根本不需要这些内容。我想专门解雇 OnSelectedIndexChanged
事件处理程序 ddlGroup
. 。这可能/实用吗?
次要问题:我可以在弹出窗口中运行服务器端代码后刷新父页面吗?
解决方案
呃,你可以这样做,但我只是使用 __doPostback() 来代替。这会将 __EVENTTARGET 和 __EVENTARGUMENT 设置为两个参数,并假设您的第一个参数是 UpdatePanel 的 UniqueID,只会导致该 UpdatePanel 刷新。
因此,您可以进行设置,以便刷新 updatepanel 执行您想要发生的操作,或者您可以在回发时检查这些值 - Request.Form["__EVENTTARGET"]
...然后从那里开始。
不隶属于 StackOverflow