我使用fancybox在单击链接时显示div的内容。这个工程使用下面的代码:如何让fancybox内的UpdatePanel工作
<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传递updatepanel的ClientID和/或按钮本身。然而,我似乎无法在代码隐藏中触发事件。
事情是,如果我删除fancybox,updatepanel按预期工作。所以我猜测,如果我能够在创建fancybox之前找出按钮后面的事件处理逻辑,我可以在连接fancybox后重新创建事件处理器逻辑?我找不到它的任何地方...
我使用ASP.Net Web窗体3.5和JQuery 1.4.1
更新
我把它通过覆盖触发代码隐藏button_click事件客户端使用下面的代码点击按钮上的事件。关键在于使用按钮的名称作为__doPostBack事件的发件人对象。唯一存在的问题是所有其他值都不会被重新发布。如果我在文本框中键入任何内容,请单击该按钮,我的代码隐藏不再知道文本框中的内容。
$("#popupTrigger").fancybox({
//.... other options,
onComplete: function() {
$("#RefreshContentButton").click(function() {
__doPostBack($(this).attr('name'), '');
});
}
});
我已经放弃了努力。我会离开这个问题,以防万一开有人会想出一个绝妙的解决方案。我抽不出更多的时间来调查。 – Peter 2010-10-28 12:54:13