使用ASP.NET按钮回发的用户控件上的jQuery UI对话框

时间:2012-04-19 21:36:59

标签: jquery asp.net jquery-ui

我有一个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没有表单标记。奇怪的是,当我第一次弹出对话框时,我必须按下对话框上的一个按钮来加载表单字段,它可以正常工作并加载字段。在对话框上的第一个回发后,所有服务器端控件退出工作。我不知道如何解决这个问题。任何帮助将不胜感激

2 个答案:

答案 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中的叠加层而不是对话框,就像你现在尝试使用对话框一样。

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