2010-05-19 53 views
1

我在ASP.NET頁面中有一個數據中繼器。它加載了大量的東西,並花費4 - 5秒鐘來顯示圖像。我無法頁面或獲取我需要顯示所有數據的部分項目,所以我需要一個加載消息或gif,但我該怎麼做?誰能幫我?如何在中繼器獲取數據時顯示「加載...」

感謝

回答

1

如果您的方案沒有一個阿賈克斯(經典形式回發或瀏覽器是通過鏈接點擊重定向) 我插入動畫GIF轉換成HTML佈局只是重定向前/後回(隱藏DIV顯示或類似的東西)。 AFAIK這種方法會遇到舊版瀏覽器的問題(動畫將被凍結)

另一種方法叫做page-processor?。瀏覽器被重定向到顯示動畫的中間頁面,而頁面請求已被加載。

您也可以從服務器發送JavaScript代碼(Response.Write/Response.Flush),它將動畫您的當前頁面。

我還建議阻止/隱藏UI控件,例如「發送表單」,否定不耐煩的用戶點擊兩次,如果服務器響應時間過長。

+0

該場景是;用戶選擇一種類型,然後選擇所選類型和季節的類型,然後頁面顯示具有該過濾器的項目。 我想做的是當中繼器是數據綁定頁面必須被鎖定並加載加載圖片,以便用戶可以理解它正在加載 對不起,我的英語不好:) – Xenon 2010-05-19 10:48:24

0

使用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> 
相關問題