我正在尝试在弹出窗口中加载用户控件,但是在触发以减少主页加载时间之后,是否可以使用 Ajax ModalPopUp Extender 或者是否有任何其他建议的弹出窗口。我可以使用框架而不是用户控件或相同的吗?
问问题
1190 次
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 回答