我有一个 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"] ...然后从那里开始。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top