ASP.NET图形开发带超链接的饼图
主页面 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位网翼网友发表了评论 查看完整内容