【问题标题】:GridView Delete with bootbox.confirm always returning falseGridView Delete with bootbox.confirm 总是返回 false
【发布时间】:2018-11-02 16:39:35
【问题描述】:

我正在尝试使用 TemplateField 中的 LinkBut​​ton 从 Gridview 中删除记录。我的 LinkBut​​ton 应该打开一个 bootbox.confirm() 并根据返回值调用后端的 GridView.RowCommand 处理程序。

GridView 布局:

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

Javascript:

function OpenDeleteBox(sender) {
            bootbox.confirm("Delete This?", function (confirmed) {
                if (confirmed) {
                    alert('if');
                    return true;
                }
            });
            alert('outside');
            return false;         
        }

我正在使用 OnClientClick 调用 javascript 函数。在函数内部时,我看到 alert('outside') (暗示它已经返回 false),然后启动箱出现。如果我将 return false 移动到 else 子句中,例如:

 bootbox.confirm("Delete This?", function (confirmed) {
                if (confirmed) {
                    alert('in if');
                    return true;
                }
                else {
                    return false;
                }
            });

它继续使用 GridView.RowCommand 处理程序删除记录,而无需等待确认框甚至出现。

编辑:似乎完成了这项工作

function OpenDeleteBox(sender) {
            if ($(sender).attr("confirmed") == "true") { return true; }
            bootbox.confirm("Delete This?", function (confirmed) {
                if (confirmed) {
                    $(sender).attr("confirmed", confirmed);
                    sender.click();
                }
            });

            return false;

        }

【问题讨论】:

  • 这在Documentation 中有介绍 - Bootstrap(因此 Bootbox)模式是异步的,因此您的 OnClientClick 将在对话框关闭之前解决。

标签: javascript asp.net vb.net aspxgridview bootbox


【解决方案1】:

查看这些帖子。

OnClientClick="return confirm('Are you sure you want delete');"

Confirm for Linkbutton before performing delete in asp.net

我认为您需要对 LinkBut​​ton 使用默认的 javascript 确认功能。似乎无法使用 bootbox 确认。这是默认行为。

【讨论】:

  • 我明白了。这似乎是有道理的。我正在考虑对特定行的处理程序进行手动 Ajax 回发。关于如何实现这一目标的任何建议?
猜你喜欢
  • 2021-01-28
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2021-11-05
  • 2018-11-05
  • 2019-05-06
  • 2017-04-29
相关资源
最近更新 更多