Javascript GridView使用引导框删除。确认始终返回false
我正在尝试使用TemplateField中的LinkButton从Gridview中删除记录。我的LinkButton应该打开一个bootbox.confirm()并根据返回值在后端调用GridView.RowCommand处理程序 网格视图布局:Javascript GridView使用引导框删除。确认始终返回false,javascript,asp.net,vb.net,aspxgridview,bootbox,Javascript,Asp.net,Vb.net,Aspxgridview,Bootbox,我正在尝试使用TemplateField中的LinkButton从Gridview中删除记录。我的LinkButton应该打开一个bootbox.confirm()并根据返回值在后端调用GridView.RowCommand处理程序 网格视图布局: <asp:GridView ID="gvEntRelationship" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" Da
<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>
我正在使用OnClientClick调用javascript函数。当内部函数运行时,我看到警报('outside')(意味着它已经返回false),然后引导框显示出来。如果我将return false移到else子句中,如:
bootbox.confirm("Delete This?", function (confirmed) {
if (confirmed) {
alert('in if');
return true;
}
else {
return false;
}
});
它继续使用GridView.row命令处理程序删除记录,而无需等待confirbox出现
编辑:似乎做了这项工作
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;
}
看看这些帖子
我认为您需要使用带有LinkButton的默认javascript确认函数。似乎无法使用引导框确认。这是默认行为 我明白了。这似乎是有道理的。我正在考虑对特定行的处理程序进行手动Ajax回发。关于如何实现这一点,有什么建议吗?我还发现:这在-Bootstrap(因此Bootbox)模型中有介绍,它们是异步的,因此您的OnClientClick将在对话框关闭之前解析。
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;
}