我有一个jQuery UI对话框,可以从我的aspx.page
中运行得很好我的问题是我需要将部分页面移动到用户控件中。我将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 :(得分:2)
还应在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 %>
iv:通过这种方式,您的对话框在回发的情况下不会消失。
答案 1 :(得分:1)
如果您正在阅读较旧的答案......无视。
我想我明白你的问题是什么......我遇到了与jquerydialog相同的问题。从来没有解决它,所以我改为使用其他技巧。
你可以
a)在对话框中使用常规的html控件和使用hiddenfields的javascript / jquery技巧...(不会详细说明因为它有点麻烦,如果你错过了它将需要永远调试)
b)使用jquerytools中的叠加层而不是对话框,就像你现在尝试使用对话框一样。