使用bootbox.confirm的GridView删除始终返回false

时间:2018-05-23 15:48:19

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

我正在尝试使用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函数。在内部功能时,我看到警报('外部')(暗示它已经返回false),然后出现引导框。如果我将return false移动到else子句中,如:

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

它继续使用GridView.RowCommand处理程序删除记录,而不等待confirmmbox甚至显示。

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

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;

        }

0 个答案:

没有答案