Я использую fancybox для отображения содержимого div при нажатии ссылки. Это работает, используя код ниже:Как получить UpdatePanel внутри fancybox working
<a id="popupTrigger" href="#popup">popup trigger</a>
<div style="display:none">
<div id="popup">
<asp:UpdatePanel ID="HerkomstCodeUpdatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
This content displays inside fancybox.
<asp:TextBox ID="CurrentTimeTextBox" runat="server"></asp:TextBox>
<asp:Button ID="RefreshContentButton" runat="server"></asp:Button>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
И в JScript:
$(document).ready(function() {
$("#popupTrigger").fancybox({
autoDimensions: false,
height: 250,
transitionIn: 'elastic',
transitionOut: 'elastic',
width: 400
});
});
Теперь то, что я ожидал, что это будет делать то, что при нажатии на кнопку (которая отображается в FancyBox) было бы обновите текстовое поле и сделайте все, что я определяю, чтобы это делалось в коде. К сожалению, ничего не происходит, когда я нажимаю кнопку.
Я пытался запустить сам __doPostback, передавая идентификатор ClientID панели обновлений и/или самой кнопки. Однако я не могу спровоцировать событие в коде.
Дело в том, что если я удалю fancybox, обновленная панель будет работать, как ожидалось. Поэтому я угадываю, могу ли я как-то узнать, какая логика обработчика событий находится за кнопкой, прежде чем я создам fancybox, я мог бы воссоздать логику обработчика событий после присоединения fancybox? Я просто не могу найти его в любом месте ...
Я использую ASP.Net WebForms 3.5 и JQuery 1.4.1
Update
Я получил его, чтобы вызвать событие отделенного кода button_click переопределив нажмите кнопку клика на кнопке, используя код ниже. Ключ заключается в использовании имени кнопки в качестве объекта отправителя для события __doPostBack. Единственная проблема, которая остается в том, что все остальные значения больше не отправляются назад. Если я напечатаю что-нибудь в текстовом поле, нажмите кнопку, мой код не знает, что находится в текстовом поле.
$("#popupTrigger").fancybox({
//.... other options,
onComplete: function() {
$("#RefreshContentButton").click(function() {
__doPostBack($(this).attr('name'), '');
});
}
});
Я отказался пробовать. Я оставляю этот вопрос открытым только в случае, если кто-то может придумать блестящее решение. Я не могу уделять больше времени, чтобы исследовать – Peter