【问题标题】:jQuery UI Dialog on user control with ASP.NET button postback带有 ASP.NET 按钮回发的用户控件上的 jQuery UI 对话框
【发布时间】:2012-04-19 21:36:59
【问题描述】:

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

【问题讨论】:

  • 我是因为你正在使用 updatepannel
  • 我尝试删除更新面板,但没有任何区别。 addressopener 是一个超链接控件,效果很好并且会弹出对话框。它是不会触发的对话框中的服务器端回发控件。

标签: jquery asp.net jquery-ui


【解决方案1】:

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

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

【讨论】:

  • 我无法将 $('#addressinformationcontent').parent().appendTo($("form:first")) 移到点击事件之外,因为我有多个对话框。如果我将它移到外面,那么只有第一个会被添加回表单。我喜欢你在后面的代码中添加回发条件的想法。会试一试。
【解决方案2】:

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

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

你可以

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

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

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

【讨论】:

    猜你喜欢
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多