Я хочу, чтобы 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, если пользователь подтвердит диалоговое окно?
Вы можете заменить следующую строку:
$('#<%= lnkEnterOperations.ClientID %>').click();
С:
__doPostBack('<%= lnkEnterOperations.UniqueID %>', '');
Это должно делать свое дело.
Ok: function () {
confirmDialog.dialog("close");
confirmDialog.data('confirmed', '1');
$('#<%= lnkEnterOperations.ClientID %>').click(function(){
__doPostBack('<%= lnkEnterOperations.UniqueID %>', '');
});
},
Cancel: function () {
confirmDialog.dialog("close");
}
Может быть, это может помочь.
Вы можете заменить " $ ('# <% = lnkEnterOperations.ClientID%>'). Click(); " с помощью <% = Page.ClientScript.GetPostBackEventReference(lnkEnterOperations, "")%>