Как запустить обратную передачу LinkButton после подтверждения с помощью диалогового окна jQuery UI?

0

Я хочу, чтобы LinkButton открывал диалоговое окно jQuery UI, в котором пользователь запрашивал действие. Если пользователь нажимает "ОК", я хочу, чтобы действие продолжалось, отправив его обратно на сервер.

Я закончил создание двух ссылок: один из них является обычным HTML, который вызывает мой диалог подтверждения. А другой - обычный контрольный сервер LinkButton, который скрыт, и что я хочу вызвать, если пользователь подтверждает диалоговое окно.

Эти две ссылки выглядят так:

<a id="preEnterOperations" href="#">
    Enter Operations
</a>
<asp:LinkButton ID="lnkEnterOperations" runat="server"
    OnClick="lnkEnterOperations_Click" Style="display:none">
    Enter Operations
</asp:LinkButton>

И вот мой JavaScript:

$(function () {
    $('#preEnterOperations').on('click',
        function (e) {
            var confirmDialog = $('#enterOperationsConfirmationDialog');
            confirmDialog.dialog({
                modal: true,
                buttons: {
                    Ok: function () {
                        confirmDialog.dialog("close");
                        confirmDialog.data('confirmed', '1');
                        $('#<%= lnkEnterOperations.ClientID %>').click();
                    },
                    Cancel: function () {
                        confirmDialog.dialog("close");
                    }
                }
            });
            return false;
        });
});

Все кажется правильным. Появится диалоговое окно подтверждения. Я вижу, что мой обработчик Ok работает, если пользователь нажимает Ok. Но строка $('#<%= lnkEnterOperations.ClientID %>').click(); ничего не делает! Я пробовал множество вариаций на этой линии, и эффект всегда один и тот же: ничего.

Может ли кто-нибудь помочь мне увидеть, как я могу выполнить обратную связь LinkButton, если пользователь подтвердит диалоговое окно?

Теги:
webforms
jquery-ui-dialog

3 ответа

3
Лучший ответ

Вы можете заменить следующую строку:

$('#<%= lnkEnterOperations.ClientID %>').click();

С:

__doPostBack('<%= lnkEnterOperations.UniqueID %>', '');

Это должно делать свое дело.

2
                Ok: function () {
                    confirmDialog.dialog("close");
                    confirmDialog.data('confirmed', '1');
                    $('#<%= lnkEnterOperations.ClientID %>').click(function(){
                         __doPostBack('<%= lnkEnterOperations.UniqueID %>', '');
                    });
                },
                Cancel: function () {
                    confirmDialog.dialog("close");
                }

Может быть, это может помочь.

  • 0
    Что это делает? Похоже, он создает новый обработчик кликов каждый раз. Но обработчик не будет вызван, пока пользователь не щелкнет его снова. И серверные элементы управления уже имеют свой собственный обработчик. Это ошибка?
0

Вы можете заменить " $ ('# <% = lnkEnterOperations.ClientID%>'). Click(); " с помощью <% = Page.ClientScript.GetPostBackEventReference(lnkEnterOperations, "")%>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню