在這裡使用了位圖對象的Save函數來輸出圖片文檔的二進制數據。這裡沒有直接輸 出到頁面的輸出流中,因為那樣做是會報錯的,這裡創建了一個臨時的內存流對象,將圖片 數據輸出到這個內存流中,然後將這個內存流中的數據輸出到頁面輸出流中。
二級主 頁面 pIE_orders.ASPx
在主頁面pie_custoemrs.aspx中新增餅圖元素時還設置了餅 圖項目的超鏈接“pIE_orders.ASPx?customerid=客戶編號”,這樣用戶點擊餅圖 圖片中的熱點時就能跳轉到二級主頁面來顯示指定客戶的訂單詳細信息。
二級主頁面 和主頁面有點類似,都用一個餅圖來顯示數據。其頁面結構和處理過程也差不多,它的 Page_Load方法代碼為
private void Page_Load(object sender, System.EventArgs e)
{
string customerid = this.Request.QueryString["customerid"] ;
if( customerid == null || customerid.Length == 0 )
return ;
// 連接數據庫
using( OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ this.Server.MapPath("demomdb.mdb");
conn.Open();
// 查詢數據庫
using( OleDbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = @"
SELECT OrderDate AS 訂購時間,
shipname AS 運輸人,
shipaddress AS 地點,
( select
sum( round( unitprice * quantity * ( 1 - discount) , 3 ) )
from orderdetails
where orderdetails.orderid = orders.orderid
) AS 總金額
FROM orders
WHERE customerid ='" + customerid + "'" ;
OleDbDataReader reader = cmd.ExecuteReader();
// 創建餅圖對象
PieShape pie = new PIEShape();
pIE.Width = 400 ;
pIE.Height = 300 ;
System.IO.StringWriter writer = new System.IO.StringWriter();
while( reader.Read())
{
double Value = Convert.ToDouble( reader.GetValue( 3 ));
string Text = "