Во-первых, чтобы предотвратить немедленную отправку страницы на сервер, необходимо отменить поведение по умолчанию для события click
, возвращая false
из вашего обработчика:
<asp:Button ID="btnClick" runat="server" OnClick="PopulateLabel"
OnClientClick="openConfirmDialog(); return false;" />
Далее,Вам нужно выполнить обратную передачу самостоятельно, когда нажата ваша кнопка Ok
:
$("#divDialog").dialog({
autoOpen: false,
buttons: {
"Ok": function() {
$(this).dialog("close");
__doPostBack("btnClick", "");
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
Обратите внимание, что первый аргумент __doPostBack()
- это имя элемента управления (его UniqueID
в терминологии ASP.NET).Так как кнопка является прямым потомком элемента <form>
, мы можем жестко закодировать его id
в вызове __doPostBack()
, но все станет сложнее, если он будет находиться в иерархии контейнера.В этом случае вы можете использовать ClientScript.GetPostBackEventReference () , чтобы сгенерировать соответствующий вызов __doPostBack()
.
РЕДАКТИРОВАТЬ: Поскольку ваша страница не содержит обратной передачи-Включенный элемент управления, __doPostBack()
не будет определен на стороне клиента.Чтобы обойти эту проблему, вы можете использовать элемент управления LinkButton вместо элемента управления Button .