C. *_*fin 15 c# asp.net ajax modalpopupextender
这是我正在尝试做的事:点击我页面上的一个按钮,这反过来使(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>
Run Code Online (Sandbox Code Playgroud)
现在,这是我的C#代码背后的代码:
protected void btnSaveData_Click(object sender, EventArgs e)
{
UpdateUserData(GetLoggedInUser());
modalPopup.Enabled = false;
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?ModalPopup显示完美,但btnSaveData_Click事件永远不会触发.
更新: 第一个建议对我不起作用.我也尝试了你的第二个建议(只要它适用于我).我的一个小的区别是我的模态面板上没有按钮(pnlHidden) - 它只是一条消息.我确实尝试在客户端使用Javascript事件,这至少与我的服务器端事件并发.这是个好消息,但我似乎无法找到或获取ModalPopupExtender或其BehaviorID的句柄.这不起作用:
function showOverlay() {
var popup = $find('modalPopup');
popup.show();
}
Run Code Online (Sandbox Code Playgroud)
popup总是等于null.
最终更新: 这是我的最终解决方案(请特别注意使用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>
Run Code Online (Sandbox Code Playgroud)
使用这个Javascript函数:
function showModal() { $find('ShowModal').show(); }
Run Code Online (Sandbox Code Playgroud)
......这个代码背后:
protected void btnSaveData_Click(object sender, EventArgs e)
{
UpdateUserData(GetLoggedInUser());
modalPopup.hide();
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*tti 15
试试这个.
创建一个虚拟隐藏字段:
<asp:HiddenField ID="hdnField" runat="server" />
Run Code Online (Sandbox Code Playgroud)
在Modal Popup声明中设置TargetcontrolID ="hdnField".
在btnSaveData_Click事件中,执行以下操作:
modalPopup.Show();
Run Code Online (Sandbox Code Playgroud)