主頁面 (pie_customers.aspx) 邏輯
- 連接 Access 資料庫 (
demomdb.mdb)。
- 查詢前 10 位客戶 ID、名稱、訂單總金額 (子查詢加總)。
- 建立
PieShape,設定寬 400、高 300。
- 逐筆
reader.Read():取得數值、文字 (含換行提示)、超連結 (pie_orders.aspx?customerid=...),呼叫 pie.Add(value, text, link)。
pie.RefreshState() 計算角度。
Session["pie_customers"] = pie 快取供圖片服務頁面使用。
lblResult.Text = pie.GetHtmlString("pieimage.aspx?name=pie_customers") 產生 HTML。
DataGrid1 同步顯示資料來源驗證。
圖片服務頁面 (pieimage.aspx)
private void Page_Load(object sender, EventArgs e)
{
string name = Request.QueryString["name"];
if (name == null) return;
PieShape pie = Session[name] as PieShape;
if (pie == null) return;
using (Bitmap bmp = pie.CreateBitmap())
{
Response.ContentType = "image/png";
using (MemoryStream ms = new MemoryStream())
{
bmp.Save(ms, ImageFormat.Png);
ms.WriteTo(Response.OutputStream);
}
}
}
協作關鍵
- 主頁面必須先將餅圖物件存入 Session,並產生正確的
img src 指向圖片服務頁面。
- 圖片服務頁面依 QueryString 從 Session 取回物件並輸出影像。
- 兩頁面緊密配合,瀏覽器才能完整顯示餅圖。