Я пытаюсь удалить запись из Gridview, используя LinkButton внутри TemplateField.Мой LinkButton должен открыть 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) , и затем появляется загрузочная коробка.Если я перенесу возвращаемое значение 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;
}