gpt4 book ai didi

c# - ASP.NET:ModalPopupExtender 阻止触发按钮单击事件

转载 作者:可可西里 更新时间:2023-11-01 07:44:51 30 4
gpt4 key购买 nike

这是我正在尝试做的事情:点击我页面上的一个按钮,这反过来使 (2) 事情发生:

  1. 显示 ModalPopup 以防止用户按下任何按钮或更改值
  2. 调用我的代码隐藏方法,完成后隐藏 ModalPopup

这是 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 事件永远不会触发。

更新:第一个建议对我没有用。我也尝试了你的第二个建议(只要它适用于我)。我这边的一个小区别是我的模式面板 (pnlHidden) 上没有按钮——它只是一条消息。我确实尝试在客户端使用 Javascript 事件,它至少与我的服务器端事件同时触发。这是个好消息,但我似乎无法找到或获取 ModalPopupExtender 或其 BehaviorID 的句柄。这不起作用:

function showOverlay() {
var popup = $find('modalPopup');
popup.show();
}

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>

使用这个 Javascript 函数:

function showModal() { $find('ShowModal').show(); }

... 后面的代码:

protected void btnSaveData_Click(object sender, EventArgs e)
{
UpdateUserData(GetLoggedInUser());
modalPopup.hide();
}

最佳答案

试试这个。

创建一个虚拟隐藏字段:

<asp:HiddenField ID="hdnField" runat="server" />

在您的 Modal Popup 声明中设置 TargetcontrolID = "hdnField"。

在您的 btnSaveData_Click 事件中,执行此操作:

modalPopup.Show();

关于c# - ASP.NET:ModalPopupExtender 阻止触发按钮单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2877551/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com