0

我有一个 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 标签之外,我需要将它们添加回来。我在单击函数中的行将其附加回“表单”,但用户控件没有表单标记。奇怪的是,当我第一次弹出对话框时,我必须在对话框上按下一个按钮来加载工作正常并加载字段的表单字段。在对话框的第一次回发后,所有服务器端控件都停止工作。我不知道如何解决这个问题。任何帮助将非常感激

4

2 回答 2

2

此外,应在单击事件之外设置以下代码行,以便在对话框中正确触发回发事件。

$('#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: 这样你的对话框在回发的情况下不会消失。

于 2012-04-20T02:56:09.537 回答
1

如果您正在阅读较旧的答案……请忽略。

我想我明白你现在的问题是什么......我遇到了与 jquerydialog 相同的问题。从来没有解决它,所以我改用其他技巧。

你可以

a)在对话框中使用常规的 html 控件和带有隐藏字段的 javascript/jquery 技巧...(不会详细介绍,因为它有点麻烦,如果你错过了一些东西,它会永远调试)

b) 使用 jquerytools 中的覆盖而不是对话框,就像您现在尝试使用对话框一样。

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

于 2012-04-20T02:38:54.867 回答