0

我正在尝试在弹出窗口中加载用户控件,但是在触发以减少主页加载时间之后,是否可以使用 Ajax ModalPopUp Extender 或者是否有任何其他建议的弹出窗口。我可以使用框架而不是用户控件或相同的吗?

4

2 回答 2

1

由于您使用的是 ASP.NET,一个简单的选择是使用 jQuery UI 和一个简单的 div/iframe 作为弹出窗口。

JavaScript:

<script type="text/javascript">
    function showPanel(panelID, pageUrl) {
        $panel = $('#' + panelID);

        $panel.html('<iframe src="' + pageUrl + '"></iframe>');
        $panel.dialog();
    }
</script>

ASPX:

<asp:LinkButton runat="server" id="lbtn1" OnClientClick="showPanel('dialog', '/myControlPage.aspx');return false;">
  Show Popup
</asp:LinkButton>
<div id="dialog">
</div>

如果你的 ASPX 控件是只显示的,你可以使用 AJAX 来检索页面的内容:

<script type="text/javascript">
function showPanel(panelID, pageUrl) {
    $panel = $('#' + panelID);

    $.ajax({
        url: pageUrl,
        type: "GET",
        dataType: "html",
        async: false,
        data: {},
        success: function (obj) {
            $panel.html(obj).html();
            $panel.dialog();
        }
    });
}
</script>

但这限制了嵌入页面“正确”回发的能力。任何回发都将只显示内页,并在从回发返回时完全删除“父”页面。

于 2012-08-31T01:14:25.937 回答
0

您可以使用 updatePanel 来实现这一点。

这里是更新面板的介绍

将您的用户控件封装在更新面板中并将其设置为可见 false。将控件设置为可见 false 确保不呈现它,因此它不会影响您的加载时间。

然后,您可以使用更新面板上的回发触发器使控件可见并显示其内容。

您可以在几毫秒后使用计时器作为加载触发器。在回发时禁用计时器。这是使用计时器刷新更新面板的教程

更新面板上的回发是通过 ajax 触发的。为此所需的所有 javascript 都是由更新面板控件本身生成的。

使用它的好处是用户控件仍然在同一页面上,并且可以与页面上的其他控件进行交互。

于 2012-08-31T03:37:59.460 回答