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】:我对@987654321@ 代码做了一些更改,我使用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 确认对话框防止回发