ASP.NET ページにデータ リピーターがあります。たくさんのものをロードし、画像を表示するのに 4 ~ 5 秒かかります。すべてのデータを表示する必要があるアイテムの一部をページングまたは取得できないため、読み込みメッセージまたは gif が必要ですが、どうすればそれを行うことができますか? 誰でも私を助けることができますか?
ありがとう
シナリオが ajax ではない場合 (クラシック フォームのポストバックまたはブラウザーがリンククリックでリダイレクトされる)、リダイレクト/ポストバックの直前にアニメーション gif を html レイアウトに挿入します (非表示の div が表示されるなど)。私の知る限り、このアプローチは昔のブラウザに問題があります(アニメーションはフリーズします)
別のアプローチはページプロセッサと呼ばれますか? . ブラウザーは、要求されたページの読み込み中にアニメーションを表示する中間ページにリダイレクトされます。
現在のページをアニメーション化するサーバー (Response.Write / Response.Flush) から JavaScript コードを送信することもできます。
サーバーの応答が長すぎる場合は、「フォームの送信」などの UI コントロールをブロック/非表示にして、せっかちなユーザーが 2 回クリックするのを防ぐこともお勧めします。
iframe を使用します。基本的に、実行速度の遅いページを iframe で開き、iframe によって発生したイベントを使用して読み込み中の画像を表示できます。
<script type="text/javascript">
var t;
//on iframe state change display or hide the loader tag
function readyStateChanged(state)
{
if (state == 'complete' || state == 4 || state == '4' || state == 'Complete')
{
//hide the loader
document.getElementById('loader').style.display = 'none';
clearTimeout(t);
} else
{
//diaplay the loader
document.getElementById('loader').style.display = '';
//hide the loader if the iframe never loads
t = setTimeout("hideLoader()", 5000);
}
}
//hide the loading tag
function hideLoader()
{
document.getElementById('loader').style.display = 'none';
clearTimeout(t);
}
</script>
<div id="loader" style="display: none;"><img />loading...</div>
<iframe id="frameX" src="your_page.aspx" width="100%" height="400px" onload="hideLoader();" onreadystatechange="readyStateChanged(this.readyState);" ></iframe>