带有ASP.NET按钮回发的用户控件上的jQuery UI对话框
我有一个jQueryUI对话框,它在我的aspx.page上运行得非常好 我的问题是我需要将页面的一部分移动到usercontrol中。我将div和jquery移动到一个用户控件。控件弹出良好,但服务器端控制火灾 这是我弹出对话框的代码带有ASP.NET按钮回发的用户控件上的jQuery UI对话框,jquery,asp.net,jquery-ui,Jquery,Asp.net,Jquery Ui,我有一个jQueryUI对话框,它在我的aspx.page上运行得非常好 我的问题是我需要将页面的一部分移动到usercontrol中。我将div和jquery移动到一个用户控件。控件弹出良好,但服务器端控制火灾 这是我弹出对话框的代码 var $partyaddress = $('#addressinformationcontent').dialog({ autoOpen: false, modal: true,
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>
//此处有一些asp控件和asp.net提交按钮
/内容模板>
我想我理解这个问题。jquery使用DOM将对话框移动到表单标记之外,我需要将它们添加回来。我在click函数中的行将其追加回“form”,但usercontrol没有form标记。奇怪的是,当我第一次弹出对话框时,我必须按下对话框上的一个按钮来加载表单字段,这样可以很好地加载表单字段。在对话框上进行第一次回发后,所有服务器端控件都停止工作。我不知道如何解决这个问题。如果您正在阅读较旧的答案,任何帮助都将不胜感激。。。无视 我想我知道你现在的问题是什么。。。我在jquerydialog中也遇到了同样的问题。我从来没有抽出时间来修理它,所以我用了其他的技巧 你可以 a) 在对话框中使用常规html控件,在hiddenfields中使用javascript/jquery技巧。。。(不会详细说明,因为这有点麻烦,如果你错过了一些东西,调试将花费很长时间) b) 使用jquerytools中的覆盖而不是对话框,方法与您现在尝试使用对话框的方法相同
如果您正在阅读较旧的答案。。。无视 我想我知道你现在的问题是什么。。。我在jquerydialog中也遇到了同样的问题。我从来没有抽出时间来修理它,所以我用了其他的技巧 你可以 a) 在对话框中使用常规html控件,在hiddenfields中使用javascript/jquery技巧。。。(不会详细说明,因为这有点麻烦,如果你错过了一些东西,调试将花费很长时间) b) 使用jquerytools中的覆盖而不是对话框,方法与您现在尝试使用对话框的方法相同
此外,为了在对话框中正确触发回发事件,应在单击事件外部设置以下代码行
$('#addressinformationcontent').parent().appendTo($("form:first"))
示例代码将被删除
$(function () {
$('#addressinformationcontent').parent().appendTo($("form:first"))
$("#addressinformationcontent").dialog(
{
autoOpen: false,
...
});
});
若您想在服务器端回发后保持jquery对话框打开,那个么需要稍微调整一下。这里就是一个例子
i:在代码隐藏文件中创建一个变量
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 %>
var$partyaddress=$('#addressinformationcontent')。对话框({
自动打开:错误,
莫代尔:是的,
身高:450,
宽度:850,
标题:“当事人地址信息”
});
iv:这样,您的对话框在回发时不会消失。还应在click事件外部设置以下代码行,以便在对话框内正确触发回发事件
$('#addressinformationcontent').parent().appendTo($("form:first"))
示例代码将被删除
$(function () {
$('#addressinformationcontent').parent().appendTo($("form:first"))
$("#addressinformationcontent").dialog(
{
autoOpen: false,
...
});
});
若您想在服务器端回发后保持jquery对话框打开,那个么需要稍微调整一下。这里就是一个例子
i:在代码隐藏文件中创建一个变量
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 %>
var$partyaddress=$('#addressinformationcontent')。对话框({
自动打开:错误,
莫代尔:是的,
身高:450,
宽度:850,
标题:“当事人地址信息”
});
iv:这样,在回发的情况下,您的对话框不会消失。Mybe,因为您使用的是UpdatePanel。我尝试删除更新面板,但没有区别。addressopener是一个超链接控件,它工作得很好并弹出对话框。对话框中的服务器端回发控件不会启动。Mybe,因为您正在使用UpdatePanel,我尝试删除更新面板,但没有区别。addressopener是一个超链接控件,它工作得很好并弹出对话框。对话框中的服务器端回发控件不会触发。我无法将$(“#addressinformationcontent').parent().appendTo($($(“form:first”))移动到click事件之外,因为我有多个对话框。如果我把它移到外面,那么只有第一个被添加回表单。我喜欢您关于在代码隐藏中添加回发条件的想法。我无法将$('#addressinformationcontent').parent().appendTo($($(“form:first”))移动到click事件之外,因为我有多个对话框。如果我把它移到外面,那么只有第一个被添加回表单。我喜欢您关于在代码隐藏中添加回发条件的想法。我会试一试的。