GridView Удалить с bootbox.confirm всегда возвращает false - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь удалить запись из 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;

        }

1 Ответ

0 голосов
/ 23 мая 2018

Ознакомьтесь с этими сообщениями.

OnClientClick = "возврат подтверждения (« Вы уверены, что хотите удалить »);"

Подтвердите для кнопки ссылки довыполнение удаления в asp.net

Я думаю, вам нужно использовать функцию подтверждения JavaScript по умолчанию с LinkButton.Кажется, подтверждение загрузки не может быть использовано.Это поведение по умолчанию.

...