由於有時查詢內容時間長,可以將查詢內容逐一顯示出來,以達到用戶可以提前查看部分內容的形式來提高用戶的體驗,那么asp.net如何實現連續不斷向客戶端顯示內容?
首先在此,我們不討論客戶端Ajax拉拽的方式解決此問題!提供如下兩種方式:
方式一(推薦使用):
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; #region 命名空間 using System.Threading; using System.Text; #endregion namespace ContinuousExport { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //由於asp.net持續輸出到客戶端 //注意:(IE內核瀏覽器)下需要字符達到256個字符以上(可以提前輸出樣式,控制后面信息樣式) //才能想客戶端即時發送新的信息 StringBuilder sbResponse = new StringBuilder(); sbResponse.Append("<style type=\"text/css\">span{color:Red;}</style>"); while (sbResponse.Length < 257) { sbResponse.Append(" "); } Response.Write(sbResponse.ToString()); Response.Flush(); int j = 0; while (true) { j++; Response.Write("<span>" + j + "</span>\t"); Response.Flush(); //1秒輸送一次(模擬復雜計算耗時) Thread.Sleep(1000); } } } }
顯示效果截圖如下:
瀏覽器:搜高高速瀏覽器(兼容模式)--兼容模式為IE內核瀏覽器
效果:每隔一秒鍾顯示一個數字的效果--此時頁面仍然在加載狀態

方式二(不推薦,原因:使用重載Render方法,不能在繼續對服務器控件指定相關信息,如賦值等...):
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; #region 命名空間 using System.Threading; using System.Text; #endregion namespace ContinuousExport { public partial class ExportMain : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected override void Render(HtmlTextWriter writer) { base.Render(writer); //輸出后面信息的樣式 Response.Write("<style type=\"text/css\">span{color:Red;}</style>"); Response.Flush(); int j = 0; while (true) { j++; Response.Write("<span>" + j + "</span>\t"); Response.Flush(); //1秒輸送一次(模擬復雜計算耗時) Thread.Sleep(1000); } } } }
顯示效果如上圖。
附上源碼:ContinuousExport.zip
作者:曾慶雷
出處:http://www.cnblogs.com/zengqinglei
本頁版權歸作者和博客園所有,歡迎轉載,但未經作者同意必須保留此段聲明, 且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利
