【问题标题】:How do I get around modal interfering with button click event?如何绕过模式干扰按钮单击事件?
【发布时间】:2019-02-22 14:58:30
【问题描述】:

在我的 ASP.Net Web 表单应用程序中,我有一个按钮,该按钮用于启动 ajaxToolKit: ModalPopupExtender 模态。

<asp:Button ID="uxTicketHistoryButton" runat="server" Text="Show Ticket History"  style="color: blue;" OnClick="uxTicketHistoryButton_Click"/>&nbsp;
<ajaxToolkit:ModalPopupExtender ID="uxTicketHistoryModal" runat="server" PopupControlID="Panel1" TargetControlID="uxTicketHistoryButton"CancelControlID="btnClose" BackgroundCssClass="modalBackground"></ajaxToolkit:ModalPopupExtender>
<asp:Panel ID="Panel1" runat="server" CssClass="modalPopup" align="center" style = "display:none">
....
</asp:Panel ID>

我曾向question 询问过如何将 C# 变量值插入模态,但我的问题似乎是模态似乎干扰了我的按钮 click event 功能;本质上是防止它开火。该功能假设在单击按钮并启动模态后获取我需要插入模态的数据。

protected void uxTicketHistoryButton_Click(object sender, EventArgs e)
{
    DataTable ticketHist = _dtMgr.GetContactInfoByName(uxContactDropdownList.SelectedValue);
    string rName = ticketHist.Rows[0]["RequestorName"].ToString();
    string rPhone = ticketHist.Rows[0]["RequestorPhone"].ToString();
    ....
}

我在调试时注意到了一些奇怪的事情:1)我在调试时在字符串变量上设置了断点(以查看返回的值)。单击按钮后,它会直接越过断点(我假设这意味着它没有“触发”该代码。2)我可以从 _Click 函数中删除所有代码,并且当我单击按钮时模态仍然启动3) 如果我注释掉模态代码并单击按钮,_Click 事件代码会正常触发,我可以看到字符串变量的值。所以,我假设我拥有模态集的方式(我怀疑它与使用TargetControlID="uxTicketHistoryButton" 有关)是问题所在。如何绕过干扰按钮单击事件的模式?我在这里做错了什么?

【问题讨论】:

  • 无论_Click 事件中的代码如何,您的模式都会弹出,对吗?
  • 是的。正如我所提到的,如果我删除了uxTicketHistoryButton_Click{ } 之间的所有内容,当我单击按钮时,模态仍然会启动。

标签: c# asp.net button onclick modal-dialog


【解决方案1】:

您似乎找到了其中一个 ajaxToolkit quirks。试试这个:

创建一个隐藏按钮:

<asp:button id="hiddenButton" runat="server" style="display:none;" />

将您的扩展器更改为目标所述按钮:

TargetControlID="hiddenButton"

然后在您的 _Click 事件中,显示模态:

protected void uxTicketHistoryButton_Click(object sender, EventArgs e)
{
    DataTable ticketHist = _dtMgr.GetContactInfoByName(uxContactDropdownList.SelectedValue);
    string rName = ticketHist.Rows[0]["RequestorName"].ToString();
    string rPhone = ticketHist.Rows[0]["RequestorPhone"].ToString();
    ....

    uxTicketHistoryModal.Show();
}

【讨论】:

  • 是的,这行得通!太奇怪了,你必须将它指向一个“隐藏”按钮。现在,如果我可以让数据显示在 html 中! ;-) 从上一个问题回到您的解决方案。再次感谢!
猜你喜欢
  • 2019-05-15
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多