Bootbox 确认:返回客户端结果以便回发到 rowCommand

Posted

技术标签:

【中文标题】Bootbox 确认:返回客户端结果以便回发到 rowCommand【英文标题】:Bootbox confirm: return client result in order to do postback to rowCommand 【发布时间】:2015-09-03 21:28:15 【问题描述】:

在 bootbox 之前,我在 gridview 中对 aspx 文件进行了此操作;

<asp:Button ID="btnDelete" CssClass="btn btn-danger" OnClientClick="if(!confirmDelete()) return false;" runat="server" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" CausesValidation="false" CommandName="DeleteRow" Text="Delete"/>

在js文件上;

function confirmDelete() 
return confirm("Are you sure you want to delete the record?"); 

确认后,gridview的RowCommand被触发,删除完成。

使用 bootbox,我真的被卡住了。我知道 bootbox 是异步的,并尝试使用“preventDefault”,但它没有用。那么如何将上面的 js 文件转换为 bootbox 版本呢? 提前致谢。

【问题讨论】:

【参考方案1】:

我终于想出了这个解决方案;

function confirmDelete(sender) 
    if ($(sender).attr("confirmed") == "true") return true;

    bootbox.confirm("Are you sure you want to delete?", function (confirmed) 
        if (confirmed) 
            $(sender).attr("confirmed", confirmed).trigger("click");
        
    );

return false;

并改变按钮的 OnClientClick;

OnClientClick="return confirmDelete(this);"

【讨论】:

【参考方案2】:

我尝试了Fatih Bilginer 解决方案,但它需要再次单击才能进行回发,所以我将.trigger("click") 更改为sender.click();

EDIT

function confirmDelete(sender) 
    if ($(sender).attr("confirmed") == "true") return true;

    bootbox.confirm("Are you sure you want to delete?", function (confirmed) 
        if (confirmed) 
            $(sender).attr('confirmed', confirmed);
            sender.click();
        
    );

return false;

【讨论】:

【参考方案3】:

我对@9​​87654321@ 代码做了一些更改,我使用callback: 来调用函数

我已经为 bootbox modal 添加了一些设计

function confirmDelete(sender) 
          if ($(sender).attr("confirmed") == "true")  return true; 

          bootbox.confirm(
          message: "Are you sure you want to delete?",
          buttons: 
              confirm: 
                  label: 'Yes',
                  className: 'btn btn-success'
              ,
              cancel: 
                  label: 'No',
                  className: 'btn btn-danger'
              
          
          ,callback: function (confirmed) 
              if (confirmed) 
                  $(sender).attr('confirmed', confirmed);
                  sender.click();
              
          );

          return false;
      

【讨论】:

以上是关于Bootbox 确认:返回客户端结果以便回发到 rowCommand的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery AJAX 和 JSON 通过 Bootbox 确认表单提交

Telerik:使用 RadButton 确认对话框防止回发

ASP.NET MVC5 Bootstrap 3 模态表单未验证客户端并回发到页面

bootbox.js官方文档中文版

bootbox.js官方文档

引导箱警报不起作用