将ASP.net控件添加到JQuery Dialog无法正确呈现

时间:2011-10-14 14:51:04

标签: c# asp.net jquery-ui jquery-ui-dialog

您好我已经看到了很多类似的问题,但所有问题都已通过将对话框添加回页面的主窗体来解决。这不能解决以下问题:

在我的Aspx文件中,我已经定义了一段代码如下:

    <asp:UpdatePanel runat="server" ID="RadAjaxPanel2" UpdateMode="always">
        <ContentTemplate>
            <div id="areaFilterDialog" runat="server">
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

我已经有了以下javascript / jquery来初始化对话框

 $("#areaFilterDialog").dialog({
                    bgiframe: true,
                    autoOpen: false,
                    resizable: false,
                    modal: true,
                    draggable: true,
                    closeOnEscape: true,
                    width: 630,
                    open: function (type, data) {
                        dialogOpen = true;
                        $(this).parent().appendTo("form");
                    }
                });
        });

将对话框的元素附加到父页面上的表单。

在.cs文件中,我按如下方式向元素添加内容:

var departmentCode = e.DepartmentCode;
var summaryType = e.SummaryType;
var summaryCode = e.SummaryCode;
var totalName = e.TotalName;
var view = this.TemplateControl.LoadControl(".\\WebControls\\FilteredAreaRadGrid.ascx") as FilteredAreaRadGrid;

using (var businessManager = new BusinessManager(new DALConnection(this.DalConnectionString)))
{
       view.DataSource = businessManager.GetData(departmentCode, summaryType, summaryCode, string.Empty);
       this.AreaFilterDialog.Controls.Add(view);
}

我通过使用ScriptManager注册以下启动脚本来制作JQuery UI对话框:

 var script = string.Format("ShowAttendanceFilterPopup('{0}');", totalName);
 ScriptManager.RegisterStartupScript(
      this.Page,
      this.Page.GetType(),
      "tmp",
      string.Format("<script type='text/javascript'>{0}</script>", script),
      false);

调用以下javascript / jquery:

function ShowAttendanceFilterPopup(summaryName) {
    $("#areaFilterDialog").data('title.dialog', summaryName);
    $('#areaFilterDialog').dialog("open");
    $('#areaFilterDialog').dialog("enable");
}

问题是应该附加到对话框的html实际上只是附加到页面顶部,并且根本不显示对话框。如果我在显示之前向对话框添加控件,则对话框会正确显示。

我已尝试使用我目前添加的内容,即包含Telerik RadGrid的UserControl,但也使用标准的asp按钮,两者都具有相同的行为。

任何人对我正在做的不正确甚至更好的事情有任何想法,这个问题的解决方案?

非常感谢,

罗布

1 个答案:

答案 0 :(得分:1)

也许试试:

<div id="areaFilterDialog">
    <asp:UpdatePanel runat="server" ID="RadAjaxPanel2" UpdateMode="always">
        <ContentTemplate></ContentTemplate>
    </asp:UpdatePanel>
</div>

我没有使用Telerik Ajax面板,但我猜的是:

using (var businessManager = new BusinessManager(new DALConnection(this.DalConnectionString)))
{
       view.DataSource = businessManager.GetData(departmentCode, summaryType, summaryCode, string.Empty);
       RadAjaxPanel2.Controls.Add(view);
}

将div放在AjaxPanel ContentTemplate中并将视图Control添加到它对我来说似乎不对。