2009-06-16 33 views
1

modalpopupをページロード時に表示して、ページが読み込まれていると言うことができるかどうかは疑問でした。私は外部ソースから多くのデータを取得するページを持っています。つまり、コントロールのいずれかが実際に満たされる前に少し時間がかかります。 私は、ページが読み込まれていることをユーザーに知らせるポップアップなどがあります。私はショーにアクセスし、背後にあるコードから隠すことができるように、ダミーのボタンbtnLoaderでASP.netページ読み込みポップアップ

<ajax:ModalPopupExtender ID="mpeLoader" runat="server" TargetControlID="btnLoader" 
    PopupControlID="pnlLoading" BackgroundCssClass="modalBackground" /> 
<asp:Panel ID="pnlLoading" runat="server" Width="100px" Style="display: none;"> 
    <div class="detailspopup"> 
     <table> 
      <tr> 
       <td><asp:Image ID="imgLoader" runat="server" ImageUrl="~/App_Themes/Main/img/loading.gif" /></td> 
      </tr> 
      <tr> 
       <td>Loading...</td> 
      </tr> 
     </table> 
    </div> 
</asp:Panel> 

は、私はこれを試してみました。私はページライフサイクルで.showメソッドを使っていましたが、ページがロードされているときにポップアップを表示する方法を見つけられないようです(読み込みが完了すると消えます)。これは、データをフィルタリングする際にも必要となり、フィルタデータに基づいて新しいデータを得る。

答えて

1

さらに詳しい情報がない限り、最善の解決策は何も言えませんが、最初のページをダイアログといくつかのjavascriptを含む「ローダー」として機能させることで、実際のページをajaxで読み込みます。

私が書いたように、それはあなたが達成しようとしているものに非常に依存します:-)!

しかし、ロードしようとしているページが状態/ポストバックコントロールのないリストのように非常に単純な場合は、コードbelovのような「ローダー」ページを作成してUrlToLoadどのページを動的に読み込むかを問い合わせるparam。

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 

    <script src="jquery.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
     $(function() 
     { 
      $("form").load("<%= this.Request["UrlToLoad"] %> form"); 
     }); 
    </script> 
</head> 

<body> 
    <form runat="server">   
     Loading... 
    </form> 
</body> 

+0

...これが好きで、どのようにあなたは私がこれを行う提案する転送

<asp:Label ID="lblLoading" runat="server" Text="Loading the requested page. Please wait ..." /> <asp:Button ID="btnNav" Style="display: none;" runat="server" OnClick="NavTo" /> protected void NavTo(object sender, EventArgs e) { Response.Redirect(Request.QueryString["url"].ToString()); } 

を作りますか? 私はクライアントサイドのスクリプト作成に戸惑いません。 –

1

あなたはjQueryのを使用して検討していますか?いくつかの優れたモーダルダイアログプラグインがあります。私は過去にエリック・マーティンのSimpleModalを広く使ってきました。とても満足しています。ダイアログを表示する前と後の両方にコールバックのフックがあるため、関数を使用するために必要なチェックを実行できます。

jQueryルートを使用すると、まだロードされているすべてのコンテンツを囲むdivを持つことができ、「ページ読み込み」メッセージを表示するモーダルダイアログで淡色表示/非表示にすることができます。次に、jQueryの$document.ready()機能を使用して、ページのロードがいつ完了したかを判断できます。この時点で、あなたはダイアログを削除する可能性があり、中のページをフェード私は

+0

これはまだ、ページが読み込まれるまでポップアップが表示されないという問題を残していませんか? 私はおそらくmasterpageにローダーを追加する必要がありますか? –

0

私たちが望むページ刚性「ホールド」になるPreLoader.aspxページがロードされていることを確認している:。

<script type="text/javascript" language="javascript"> 
window.onload=function() 
{ 
    $get("ctl00_ContentPlaceHolder1_btnNav",document).click(); 
    setTimeout('document.images["Loader"].src="App_Themes/Main/img/loading.gif"', 200);   
} 
</script> 

ボタンは、実際にそれがすべての重いデータページのために再利用できるように私は

関連する問題