You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用bootbox.confirm实现GridView删除时始终返回false的问题

搞定ASP.NET GridView里Bootbox确认框和LinkButton的异步冲突

嘿,这个问题我之前做ASP.NET项目时也踩过一模一样的坑!核心问题出在bootbox.confirm是异步执行的,和ASP.NET服务器控件的同步提交逻辑不兼容,我来给你一步步拆解解决方案:

先说说你遇到的问题根源

你写的初始JS代码里,调用bootbox.confirm之后,代码不会等用户点击确认就直接往下跑,执行return false——这就是为啥先弹出alert('outside'),之后才看到确认框;要是把return false移去else分支,服务器端提交会直接触发,根本等不到用户确认。

可行的解决思路

我们可以给LinkButton加个自定义属性标记用户是否确认,确认后再手动触发按钮提交,具体实现如下:

1. GridView布局不用改

你的GridView代码完全没问题,LinkButton的OnClientClick还是绑定OpenDeleteBox(this)就行:

<asp:GridView ID="gvEntRelationship" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="OFTID" DataSourceID="ObjectDataEntRelations" EnableModelValidation="True" >
    <Columns>
        <asp:CommandField ShowEditButton="True" />
        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="lnkDelRel" runat="server" CausesValidation="False" CommandName="Del" Text="Delete" OnClientClick="return OpenDeleteBox(this);"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

2. 替换成这个JS函数

function OpenDeleteBox(sender) {
    // 先检查是否已经确认过,确认过就放行提交
    if ($(sender).attr("confirmed") == "true") {
        return true;
    }
    // 弹出bootbox确认框
    bootbox.confirm("Delete This?", function (confirmed) {
        if (confirmed) {
            // 给按钮打个已确认的标记
            $(sender).attr("confirmed", confirmed);
            // 手动触发按钮点击,这次会走上面的放行分支
            sender.click();
        }
    });
    // 第一次点击直接返回false,阻止默认提交
    return false;
}

为啥这个能行?

我给你捋一遍流程:

  1. 第一次点删除按钮:函数发现按钮没有confirmed标记,弹出确认框,然后立刻return false,把默认的服务器提交拦下来。
  2. 用户点确认:我们给按钮加个confirmed="true"的属性,再手动点一下这个按钮。
  3. 第二次进函数:检测到confirmed是true,直接return true,允许按钮提交到后端,触发GridView的RowCommand事件。

这样既保证了用户能看到确认框做选择,又能正确触发后端的删除逻辑,完美解决冲突~

内容的提问来源于stack exchange,提问作者Addy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:52:03