ASP.NET: программно запустить событие на стороне сервера в window.opener с JavaScript - PullRequest
0 голосов
/ 18 февраля 2011

У меня есть 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 Ответ

1 голос
/ 18 февраля 2011

Эх, вы могли бы сделать это таким образом, но я бы просто использовал вместо этого __doPostback (). Это устанавливает __EVENTTARGET и __EVENTARGUMENT к двум параметрам, и, предполагая, что вашим первым параметром является UniqueID элемента UpdatePanel, вызывает обновление только этой UpdatePanel.

Так что вы можете либо настроить все так, чтобы обновление панели обновления делало то, что вы хотите, или вы можете проверить эти значения при обратной передаче - Request.Form["__EVENTTARGET"] ... и перейти оттуда.

...