Вот то, что я пытаюсь сделать: Нажмите кнопку на моей странице, которая в свою очередь делает (2), вещи происходят:
Вот разметка ASP:
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true"
UpdateMode="Always">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveData" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Panel ID="pnlHidden" runat="server" style="display: none;">
<div>
<h1>Saving...</h1>
</div>
</asp:Panel>
<cc1:ModalPopupExtender ID="modalPopup"
BackgroundCssClass="modalBackground" runat="server"
TargetControlID="btnSaveData" PopupControlID="pnlHidden"
BehaviorID="ShowModal">
</cc1:ModalPopupExtender>
<asp:Button ID="btnSaveData" runat="server" Text="Save Data"
OnClick="btnSaveData_Click" />
</ContentTemplate>
</asp:UpdatePanel>
Теперь, вот мой код позади кода C#:
protected void btnSaveData_Click(object sender, EventArgs e)
{
UpdateUserData(GetLoggedInUser());
modalPopup.Enabled = false;
}
Почему это не работает? ModalPopup отображается отлично, но btnSaveData_Click огни события NEVER.
ОБНОВЛЕНИЕ: первое предложение не работало на меня. Я также попробовал Ваше второе предложение (поскольку оно относилось ко мне). Незначительные различия на моем конце - то, что нет никакой кнопки на моей модальной панели (pnlHidden) - это - просто сообщение. Я действительно пытался использовать события JavaScript на стороне клиента, которая, по крайней мере, стреляла одновременно с моим событием серверной стороны. Это было хорошими новостями, но я, может казаться, не нахожу или не захватываю дескриптор на ModalPopupExtender или его BehaviorID. Это не работает:
function showOverlay() {
var popup = $find('modalPopup');
popup.show();
}
всплывающее окно ВСЕГДА равно пустому указателю.
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ: Это - мое конечное решение для того, чтобы заставлять это работать (Обратите определенное внимание на использование OnClientClick И OnClick):
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true"
UpdateMode="Always">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSaveData" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Panel ID="pnlHidden" runat="server" style="display: none;">
<div>
<h1>Saving...</h1>
</div>
</asp:Panel>
<cc1:ModalPopupExtender ID="modalPopup"
BackgroundCssClass="modalBackground" runat="server"
TargetControlID="hdnField" PopupControlID="pnlHidden"
BehaviorID="ShowModal">
<asp:HiddenField ID="hdnField" runat="server" />
</cc1:ModalPopupExtender>
<asp:Button ID="btnSaveData" runat="server" Text="Save Data"
OnClientClick="showModal();" OnClick="btnSaveData_Click" />
</ContentTemplate>
</asp:UpdatePanel>
Используя эту функцию JavaScript:
function showModal() { $find('ShowModal').show(); }
... И этот код позади:
protected void btnSaveData_Click(object sender, EventArgs e)
{
UpdateUserData(GetLoggedInUser());
modalPopup.hide();
}
Попробуйте это.
Создайте фиктивное скрытое поле:
<asp:HiddenField ID="hdnField" runat="server" />
Установите TargetcontrolID = "hdnField" в объявлении модального всплывающего окна.
В событии btnSaveData_Click сделайте следующее:
modalPopup.Show();
Первая попытка: попробуйте установить свой ButtonID в теге OkControlID и повторите попытку
ИЛИ
Вторая попытка: вызовите свое мероприятие через javascript, похоже, возникли некоторые проблемы с событиями щелчка
<div>
<cc1:ModalPopupExtender PopupControlID="Panel1"
ID="ModalPopupExtender1"
runat="server" TargetControlID="LinkButton1" OkControlID="Ok"
OnOkScript="__doPostBack('Ok','')">
</cc1:ModalPopupExtender>
<asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</div>
<asp:Panel ID="Panel1" runat="server">
<asp:Button ID="Ok" runat="server" Text="Ok" onclick="Ok_Click" />
</asp:Panel>