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

在bootbox之前,我在gridview的aspx文件中做了这个;

<asp:Button ID="btnDelete" CssClass="btn btn-danger" OnClientClick="if(!confirmDelete()) return false;" runat="server" CommandArgument="" 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版本呢? 提前致谢。

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

 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);" 

我尝试了Fatih Bilginer解决方案,但它需要再次点击才能进行回发,因此我更改了.trigger("click") for .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; } 

我在dannyzar代码中做了一些改动,我使用了callback:调用函数

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

 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; }