ポップアップでユーザーコントロールを読み込もうとしていますが、ホームページの読み込み時間を短縮するために起動した後、Ajax ModalPopUp Extenderを使用することは可能ですか、それとも他に推奨されるポップアップがありますか。ユーザーコントロールまたは同じものの代わりにフレームを使用できますか?
2 に答える
ASP.NET を使用しているので、簡単なオプションの 1 つは、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>
ただし、これにより、埋め込みページが「正しく」ポストバックする機能が制限されます。ポストバックは内部ページのみを表示し、ポストバックから戻ったときに「親」ページを完全に削除します。
updatePanel を使用してこれを実現できます。
アップデートパネルのご紹介です
ユーザー コントロールを updatepanel 内にエンベロープし、visible false に設定します。コントロールを visible false に設定すると、コントロールがレンダリングされなくなり、読み込み時間に影響しなくなります。
その後、更新パネルで Postback トリガーを使用して、コントロールを true に表示し、その内容を表示できます。
タイマーを数ミリ秒後にロードするトリガーとして使用できます。ポストバックのタイマーを無効にします。これは、タイマーを使用して更新パネルを更新するチュートリアルです。
更新パネルのポストバックは ajax 経由で起動されます。これに必要なすべての JavaScript は、更新パネル コントロール自体によって生成されます。
これを使用する利点は、ユーザー コントロールが同じページ上にあり、ページ上の他のコントロールと対話できることです。