АСП.НЕТ:Программно запустить событие на стороне сервера в window.opener с помощью JavaScript

StackOverflow https://stackoverflow.com/questions/5043866

Вопрос

У меня есть 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 два параметра, и если предположить, что вашим первым параметром является UniqueID UpdatePanel, это приведет к обновлению только этой UpdatePanel.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top