2012-04-19 41 views
0

用戶控制jQuery UI的對話框我有一個jQuery UI的對話框,從我的aspx.page的偉大工程與ASP.NET按鈕回傳

我的問題是,我需要移動頁面的一部分爲用戶控件。我把div和jquery移到了用戶控件中。該控件彈出正常,但服務器端控制火災。

這是我的代碼彈出對話框。

 var $partyaddress = $('#addressinformationcontent').dialog({ 
      autoOpen: false, 
      modal: true, 
      height: 450, 
      width: 850, 
      title: 'Party Address Information' 
     }); 

     $('#addressopener').click(function() { 
      $('#addressinformationcontent').parent().appendTo($("form:first")); 
      $partyaddress.dialog('open'); 
      return false; 
     }); 

我的DIV這是在對話框中彈出是:

<div id="addressinformationcontent"> 

<asp:UpdatePanel ID = "updatePanelAddress" runat="server"> 

<ContentTemplate> 

//some asp controls here and a asp.net submit button 

/ContentTemplate> 

</asp:UpdatePanel> 

</div> 

我想我明白這個問題。 jquery使用DOM移動Form標籤之外的對話框,我需要將它們添加回去。我在click函數中的行將其追加回「表單」,但usercontrol沒有表單標籤。奇怪的是,當我第一次彈出對話框時,我不得不按下對話框上的按鈕來加載可以正常工作的表單字段並加載字段。在對話框中第一次回發後,所有服務器端控件都退出工作。我不知道如何解決這個問題。任何幫助將不勝感激

+0

因爲你正在使用updatepannel而使用Mybe – 2012-04-19 21:45:13

+0

'addressopener'是一個按鈕嗎? – 2012-04-19 21:54:49

+0

我嘗試刪除更新面板,但沒有任何區別。 addressopener是一個超鏈接控件,效果很好並彈出對話框。它的服務器端回發控件在不會觸發的對話框中。 – 2012-04-20 00:15:36

回答

1

如果你正在閱讀舊的答案......無視。

我想我明白你現在的問題是什麼......我也遇到過與jquerydialog相同的問題。從來沒有去解決它,所以我反而使用其他技巧。

可以

一)使用與hiddenfields對話框和JavaScript/jQuery的技巧中普通的HTML控件...(不會進入細節因爲真的是有點麻煩,如果你錯過的東西,它會採取永久調試)

b)使用jquerytools代替對話框的疊加層,就像你現在試圖使用對話框一樣。

http://jquerytools.org/demos/overlay/index.html

2

而且下面的代碼行應該以內部對話框正確觸發回發事件設置外click事件。

$('#addressinformationcontent').parent().appendTo($("form:first")) 

示例代碼將會是。

$(function() { 
     $('#addressinformationcontent').parent().appendTo($("form:first")) 
     $("#addressinformationcontent").dialog(
     { 
     autoOpen: false, 
     ... 
     }); 
}); 

如果你想在服務器端回發後保持jquery對話框打開,你需要稍微調整一下。一個例子就是在這裏。

我:在代碼後面創建一個變量文件。

protected string PostBackOption =""; 

ii:在頁面加載或頁面預渲染事件時添加ispostback條件。

if (Page.IsPostBack) 
{ 
    PostBackOption = "$(\"#addressinformationcontent\").dialog(\"open\");"; 
} 

III:JS腳本中添加變量

var $partyaddress = $('#addressinformationcontent').dialog({ 
     autoOpen: false, 
     modal: true, 
     height: 450, 
     width: 850, 
     title: 'Party Address Information' 
    }); 

<%=PostBackOption %> 

四:這樣您的對話框不會回傳的情況下消失。

+0

因爲我有多個對話框,所以我不能移動$('#addressinformationcontent')。parent()。appendTo($(「form:first」))。如果我將它移到外面,只有第一個被添加回表單。我喜歡關於在後面的代碼中添加回發條件的想法。會給那一槍。 – 2012-04-20 18:20:01