ASP.NET:使用JavaScript以编程方式在window.opener中触发服务器端事件

时间:2011-02-18 16:28:13

标签: javascript asp.net window.opener

我有一个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事件处理程序。这可能/实用吗?

次要问题:我是否可以在弹出窗口中运行服务器端代码后刷新父页面?

1 个答案:

答案 0 :(得分:1)

呃,你可以这样做,但我只是使用__doPostback()代替。这将__EVENTTARGET和__EVENTARGUMENT设置为两个参数,并假设您的第一个参数是UpdatePanel的UniqueID,只会导致UpdatePanel刷新。

因此,您可以进行设置,以便更新updatepanel以执行您想要发生的事情,或者您可以在回发时检查这些值 - Request.Form["__EVENTTARGET"] ...然后从那里开始。