ASP.NET图形开发带超链接的饼图

时间:2008-07-04 06:03:16  来源:  作者:  【背景色 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白

  主页面 pie.aspx

  这个页面是演示程序的主页面,界面上放置一个名为lblResult的标签,察看它的C#代码也不复杂,主要是Page_Load方法,其代码为

private void Page_Load(object sender, System.EventArgs e) 

    // 连接数据库 
    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 top 10 
    customers.customerid , 
    customers.companyname as 客户名称, 
    ( select sum( round(    orderdetails.unitprice 
                        * orderdetails.quantity 
                        * ( 1.0 - orderdetails.discount) , 2 ) ) 
            from orderdetails , orders 
            where orderdetails.orderid = orders.orderid 
                and orders.customerid = customers.customerid 
    ) as 订单总金额 
from customers"; 
            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()) 
            { 
                string id = Convert.ToString( reader.GetValue( 0 )); 
                double Value = Convert.ToDouble( reader.GetValue( 2 )); 
                string Text = "客户名称:" + Convert.ToString( reader.GetValue( 1 )) 
                    + "\r\n订单金额:" + Convert.ToString( reader.GetValue( 2 )) 
                    + "\r\n点击察看该客户订单的详细情况" ; 
                string Link = "pie_orders.aspx?customerid=" + id ; 
                pie.Add( Value , Text , Link ); 
            }//while 
            reader.Close(); 
            pie.RefreshState(); 
            this.Session["pie_customers"] = pie ; 
            this.lblResult.Text = pie.GetHtmlString("pieimage.aspx?name=pie_customers"); 
            this.DataGrid1.DataSource = pie ; 
            this.DataGrid1.DataBind(); 
        } 
    } 
}

  这个函数中首先是连接数据库,并执行一个SQL查询,查询结果是10个客户编号,名称及其名下所有的订单总金额。

  创建一个饼图文档对象,然后遍历查询结果,对每一条记录都调用饼图文档对象的Add方法向饼图文档中添加一个饼图项目。

  调用饼图文档对象的RefreshState方法刷新饼图的内部状态,然后将饼图对象保存到Session中拱将来的图片服务页面使用。然后设置lblResult标签的文本为饼图对象生成的HTML字符串。

  这里还有一个DataGrid只是用来简单的显示饼图文档的内容。


文章评论

共有 0位网翼网友发表了评论 查看完整内容