Выполнять обратную передачу при нажатии кнопки OkButton в ModalPopup в ASP.NET AJAX.

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

Вопрос

Я следую примеру в Атлас:Создание подтверждения с помощью расширения ModalPopup чтобы выполнить обратную передачу при нажатии кнопки OkButton в ModalPopup (он использует ModalPopupExtender, который входит в набор инструментов управления ASP.NET Ajax), но, как я вижу, Sys.WebForms.PostBackAction() больше не присутствует в ASP.NET AJAX (пример для Atlas).Когда я запускаю его, появляется «Ошибка выполнения Microsoft JScript:Ожидается объект» появляется сообщение об ошибке в строке javascript, где я создаю PostBackAction.Как я могу заставить это работать в ASP.NET AJAX или, может быть, есть другой способ сделать это?Спасибо

Это было полезно?

Решение

Задумывались ли вы об использовании ConfirmButtonExtender?Вы получаете модальный «шик» через расширитель и получаете необходимую обработку PostBack.

Вы подключаете событие нажатия кнопки как обычно для обработки, но расширитель Confirm «перехватывает» обработку и позволяет продолжить работу, если пользователь подтвердит действие.

Другие советы

События на стороне сервера работают с ModalPopupExtender.Что вам нужно сделать, так это создать кнопку со стилем отображения, равным none.Затем установите для свойства TargetControlID ModalPopupExtender идентификатор скрытой кнопки.

<asp:Button ID="btnShowModal" runat="server" Text="Show" OnClick="btnShowModal_Click" />
<asp:Button ID="btnHidden" runat="server" Style="display: none" />
<ajaxControlToolkit:ModalPopupExtender ID="modalExtender" runat="server" 
    TargetControlID="btnHidden" PopupControlID="divId" />

В обработчике OnClick покажите модальное окно:

modalExtender.Show();

В обработчике элемента управления, который будет закрывать модальное окно (обычно кнопку), скройте модальное окно:

modalExtender.Hide();

Я могу успешно использовать этот метод для обратной отправки на сервер, чтобы заполнить элементы управления в моем модальном окне информацией из базы данных во время обратной передачи.Работает как чемпион.

Если я правильно помню ModalPopupExtender, у него есть OKControlID, который вы установили в качестве идентификатора кнопки.

Не могли бы вы просто назначить свою кнопку клиентскому обработчику onclick, который вызывает обратную передачу?

Например, что-то вроде:

 myModalPopupExtender.OkButtonID = myOKButton.ID;
 string script = ClientScriptManager.GetPostBackEventReference(myOKButton, myOKButton.ID);

 myOKButton.Attributes.Add("onclick", script);

РЕДАКТИРОВАТЬ:Это выглядит как еще одно потенциальное решение здесь.

Вы можете разместить на панели невидимую кнопку и установить ее как OkButton.Добавьте на панель свою настоящую кнопку и добавьте ее обработчик событий OnClick.См. код ниже:

<cc1:ModalPopupExtender 
TargetControlID="btnSubmit"
DropShadow="true"
OkControlID="btnOK"
CancelControlID="btnDecline"
PopupControlID="pnlTermsAndConditions"
BackgroundCssClass="popup"
ID="ModalPopupExtender1" 
runat="server">
</cc1:ModalPopupExtender>
<asp:Panel ID="pnlTermsAndConditions" runat="server">
<table width="500" cellpadding="6" cellspacing="0" border="0" bgcolor="white">
<tr>
    <td><b>Tables and Content</b></td>
</tr>
<tr>
    <td><asp:TextBox ID="TermsAndCondition" runat="server" TextMode="MultiLine" Rows="10" Columns="60">
    This is my terms and condoition
    </asp:TextBox></td>
</tr>
<tr>
    <td align="center">
    <asp:Button ID="btnAccept" runat="server" CssClass="btn" Text=" Accept " OnClick="btnAccept_Click" />&nbsp;&nbsp;
    <asp:Button ID="btnDecline" runat="server" CssClass="btn" Text=" Decline " />
    <asp:Button ID="btnOK" style="display:none;visible:false;" runat="server" CssClass="btn" Text=" OK " />
    </td>
</tr>
</table>
</asp:Panel>

Это решение, которое я искал.Отличный пост.Кстати, необязательно создавать макет кнопки ОК.Только не включайте необязательный параметр OKbutton в определение расширения модального всплывающего окна.

Может быть, просто добавить к кнопке событие OnClick на стороне сервера?Это должно вернуть всю форму.Или вы можете получить основную форму из html ($find('myFormName') или что-то в этом роде) и выполнить для нее .submit().

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