【问题标题】:Stop ModalPopup Extender to popup停止 ModalPopup Extender 以弹出
【发布时间】:2012-10-24 06:08:15
【问题描述】:

我有一个模态弹出扩展器,它会在单击按钮时触发...现在无论 onclientclick 函数返回值 true/false 是否始终都会弹出。我需要停止模态以在返回 false 和模态以触发返回 true 时触发。如何执行此操作?

请在下面找到代码:

<div style="text-align:center;" runat="server" id="pnlButton">          
    <asp:Button  CssClass="button" ID="btnBack" runat="server" Text="Back" 
        Width="120px" onclick="btnBack_Click" UseSubmitBehavior="false" />
    &nbsp;
    <asp:Button  CssClass="button" ID="btnCancel" runat="server" 
            Text="Cancel Request" Width="130px" onclick="btnCancel_Click" onClientClick="Validate();" />
</div>
<div style="text-align:center;">
<asp:Button  CssClass="button" ID="btnDone" Visible="false" runat="server" 
        Text="Done" Width="110px" onclick="btnDone_Click"   />
</div>

<ajaxToolkit:ConfirmButtonExtender ID="cbe" runat="server"
TargetControlID="btnCancel"
DisplayModalPopupID="ModalPopupExtender1"
ConfirmText="Are you sure you want to click this?" />
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnCancel"
PopupControlID="PNL" OkControlID="ButtonOk" CancelControlID="ButtonCancel" BackgroundCssClass="modalBackground" />
<asp:Panel ID="PNL" runat="server" Style="display: none; width: 400px; background-color: White;
    border-width: 2px; border-color: Black; border-style: solid; padding: 20px;">
    <h2>Are you sure you want to cancel this request?</h2>
    <br />
    <br />
    <div style="text-align: right;">
        <asp:Button ID="ButtonOk" runat="server" Text="Yes" CssClass="button" />&nbsp;&nbsp;
        <asp:Button ID="ButtonCancel" runat="server" Text="No" CssClass="button" />
    </div>
</asp:Panel>

【问题讨论】:

  • 我在任何地方都看不到 onclientclick。似乎javascript确认也更容易实现。
  • 什么情况下不想验证?
  • 当 javascript 验证在页面中触发时.. 我不需要触发弹出窗口。否则我需要触发弹出窗口
  • 您要使用 ASP.NET 验证还是 Validate 是您的客户端方法?

标签: c# javascript .net ajax ajaxcontroltoolkit


【解决方案1】:

您可以从 javascript 打开弹出窗口

function ValidateAndOpen(){
if(Validate()){
var modalDialog = $find("ModalPopupExtender1"); 
// get reference to modal popup using the AJAX api $find() function    
  if (modalDialog != null) {
    modalDialog.show();
  }    
 }
return false;
}

您必须在 ModalPopupExtender 上设置 ClientIDMode="Static" 并设置 OnClientClick="return ValidateAndOpen();"

【讨论】:

    【解决方案2】:

    将您的代码更改为以下内容

     onClientClick="return Validate();"
    

    【讨论】:

    • 我试过它不工作......它仍然会在返回 true 和 false 时触发
    【解决方案3】:

    把这个脚本放到你的表单上:

     function pageLoad(sender, args) {
          if (args.get_isPartialLoad() === false) {
               $find("<%= ModalPopupExtender1.ClientID %>").add_showing(function (sender, args) { args.set_cancel(Validate()); });
          }
     }
    

    【讨论】:

    • 编译错误说明:在编译服务此请求所需的资源时出错。请查看以下具体错误详情并适当修改您的源代码。
    • 编译器错误消息:CS0120:非静态字段、方法或属性“System.Web.UI.Control.ClientID.get”需要对象引用 第 34 行:函数 pageLoad(sender, args ) { 第 35 行: if (args.get_isPartialLoad() === false) { 第 36 行: $find("").add_showing(function (sender, args) { args.set_cancel(ValidateControl ());});第 37 行:} 第 38 行:}
    • @PeteEngineer,我已经修复了脚本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2019-11-29
    相关资源
    最近更新 更多