我使用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