2012-04-19 46 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