這個函數中首先是連接數據庫,並執行一個 SQL查詢,查詢結果是10個客戶編號,名稱及其名下所有的訂單總金額。
創建一個餅 圖文檔對象,然後遍歷查詢結果,對每一條記錄都調用餅圖文檔對象的Add方法向餅圖文檔中 添加一個餅圖項目。
調用餅圖文檔對象的RefreshState方法刷新餅圖的內部狀態,然 後將餅圖對象保存到Session中拱將來的圖片服務頁面使用。然後設置lblResult標簽的文本 為餅圖對象生成的Html字符串。
這裡還有一個DataGrid只是用來簡單的顯示餅圖文檔 的內容。
圖片服務頁面 pIEimage.ASPx
本頁面用來生成餅圖圖形的圖像文檔 ,該頁面沒有任何Html代碼,其C#代碼也很簡單,只有一個Page_Load函數,其代碼為
private void Page_Load(object sender, System.EventArgs e)
{
// 獲得參數
string name = this.Request.QueryString ["name"] ;
if( name == null )
{
return ;
}
// 獲得餅圖對象
PieShape pie = this.Session[ name ] as PIEShape ;
if( pIE == null )
{
return ;
}
using( Bitmap bmp = pIE.CreateBitmap())
{
this.Response.ContentType = "image/png";
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bmp.Save( ms , System.Drawing.Imaging.ImageFormat.Png );
ms.WriteTo( this.Response.OutputStream );
ms.Close();
}
}
該頁面試圖從session中加載頁面參數指定的名稱的餅圖文檔對象,並利用該 文檔對象的CreateBmp函數獲得一個位圖對象,然後輸出PNG格式的圖像數據。
這個圖 片服務頁面要正常工作,需要事先將餅圖文檔對象保存到Session中,然後使用正確的參數來 調用這個頁面。
主頁面 pIE_customers.ASPx中,已經將生成的文檔對象使用名稱 pIE_customers保存到Session中,同時它生成的Html代碼中使用的圖片地址就是 pIEimage.ASPx?name=pIE_custoemrs ,主頁面為了圖片服務頁面正常工作已經做好了充分的 准備。由於主頁面和圖片服務頁面密切配合工作,客戶端浏覽器中才能完整的顯示餅圖圖形 。