ASP.NET MVC 3 Beta中超酷的Chart

作者:控件中国网   出处:控件中国网   2015-07-23 11:25:25   阅读:7

本文将介绍到ASP.NET MVC 3 Beta中才内置的Chart,包括Chart数据源的配置、Chart的显示、Chart保存三个方面。


 

AD: Xtreme Toolkit Pro - 界面套包 —正版、购买、下载、价格、销售、代理、授权、技术支持尽在控件中国网

 

 

前面一篇文章:ASP.NET MVC 3 Beta初体验之WebGrid介绍了WebGrid控件的使用,ASP.NET MVC 3 Beta中才内置Chart的。这篇文章中将介绍Chart的使用。包括Chart数据源的配置、Chart的显示、Chart保存三个方面。Chart是很多系统中使用,所以在ASP.NET MVC 3 Beta初体验之中介绍它是很有必要的。


 

1、配置Chart的数据源


 

给Chart配置数据源大概有三种方式。


 

第一种:使用数组示例:Controller代码:


 

public ActionResult BasicChart(){   return View();   } 


 

BasicChart.cshtml代码:


 

 p  @{   var key = new Chart(width: 600, height: 400)   .AddTitle( 人员流动情况 )   .AddSeries(name:  Employee ,xValue: new[] {    一月份 ,  二月份 ,  三月份 ,  四月份 ,  五月份 ,  六月份 ,  七月份 ,  八月份 ,  九月份 }, yValues: new[] {  2 ,  6 ,  4 ,  5 ,  3 , 4 , 9 , 2 , 5 })   .Write();   } /p  


 

从上面代码可以看到,给 Chart的xValue配置了一个数组,相应的yValue也配置了一个相应的数组。


 

运行效果:


 


 

此时,们发现这个图形是单独显示的,没有站点的样式和母版。下面实现将这个图形显示在一个页面中。 


 

定义一个Action:


 

public ActionResult ShowBasicChart()  {   return View();   } 


 

View代码:定义一个img标签,将src改成生成图片的action。


 

 p img src= BasicChart  /   /p  


 

效果:有了站点样式和母板:


 


 

第二种方式:数据库查询


 

示例:


 

@{   var db = Database.Open( SmallBakery    var data = db.Query( SELECT Month, Number FROM Employee    var key = new Chart(width: 600, height: 400)   .AddTitle( 人员流动 )   .DataBindTable(dataSource: data, xField:  Month )   .Write(); } 


 

第三种方式:XML示例:


 

@using System.Data; @{   var dataSet = new DataSet();   dataSet.ReadXmlSchema(Server.MapPath( ~/App_Data/data.xsd ));   dataSet.ReadXml(Server.MapPath( ~/App_Data/data.xml ));   var dataView = new DataView(dataSet.Tables[0]); var key = new Chart(width: 600, height: 400)   .AddTitle( Sales Per Employee )   .AddSeries( Default , chartType:  Pie , xValue: dataView, xField:  Name ,   yValues: dataView, yFields:  Sales )   .Write(); } 


 

由于这三种方式都类似,了解其中一种,其余的类似,就不细说了,为了简单起见,下面的例子都是用数组的方式来实现。


 

2、Chart的显示:


 

chartType属性:它有一个chartType属性,可以定义显示的方式。比如将上面的例子的chartType定义为 Pie ,就显示为饼图。


 

@{   var key = new Chart(width: 600, height: 400)   .AddTitle( 人员流动情况 )   .AddSeries(name:  Employee ,chartType:  Pie , xValue: new[] {  一月份 ,  二月份 ,  三月份 ,  四月份 ,  五月份 ,  六月份 ,  七月份 ,  八月份 ,  九月份 }, yValues: new[] {  2 ,  6 ,  4 ,  5 ,  3 , 4 , 9 , 2 , 5 })   .Write();   } 


 

效果:


 


 

template属性:它可以定义背景模板,如修改代码为:template: ChartTheme.Green


 

代码


 

 @{   var key = new Chart(width: 600, height: 400,template: ChartTheme.Green)   .AddTitle( 人员流动情况 )   .AddSeries(name:  Employee ,xValue: new[] {  一月份 ,  二月份 ,  三月份 ,  四月份 ,  五月份 ,  六月份 ,  七月份 ,  八月份 ,  九月份 }, yValues: new[] {  2 ,  6 ,  4 ,  5 ,  3 , 4 , 9 , 2 , 5 })   .Write(); } 


 

效果:


 


 

3、Chart保存


 

将Chart保存到缓存中:看下面代码:


 

@{   var chartKey = Request[ key ];   if (chartKey != null)   {   var cachedChart = Chart.GetFromCache(key: chartKey);   if (cachedChart == null)   {   cachedChart = new Chart(600, 400);   cachedChart.AddTitle( Cached Chart -- Cached at   + DateTime.Now);   cachedChart.AddSeries( name:  Employee , axisLabel:  Name ,   xValue: new[] {  一月份 ,  二月份 ,  三月份 ,  四月份 ,  五月份 ,  六月份 ,  七月份 ,  八月份 ,  九月份 },   yValues: new[] {  2 ,  6 ,  4 ,  5 ,  3 , 4 , 9 , 2 , 5 });   cachedChart.SaveToCache(key: chartKey,minutesToCache: 2,slidingExpiration: false);   }   Chart.WriteFromCache(chartKey);   } } 


 

Chart.GetFromCache(key: chartKey)将根据key从缓存中取出Chart,cachedChart.SaveToCache(key: chartKey,minutesToCache: 2,slidingExpiration: false)是将Chart缓存起来。看下图:


 


 

当再次请求的时候,就直接从缓存中取数据。设置缓存两分钟,两分钟之后这次的缓存失效。


 

将Chart保存为图片:


 

使用下面代码将图形保存为图片:


 

 @{   var filePathName =  _ChartFiles/chart01.jpg ;   if (!File.Exists(Server.MapPath(filePathName)))   {   var chartImage = new Chart(600, 400); chartImage.AddTitle( Chart Title ); chartImage.AddSeries(   name:  Employee , axisLabel:  Name , xValue: new[] {  一月份 ,  二月份 ,  三月份 ,  四月份 ,  五月份 ,  六月份 ,  七月份 ,  八月份 ,  九月份 },   yValues: new[] {  2 ,  6 ,  4 ,  5 ,  3 , 4 , 9 , 2 , 5 }); chartImage.Save(path: filePathName);   } } 


 

保存之后的图片:


 


 

将Chart保存为保存为XML:


 

 @{   Chart chartXml;   var filePathName =  _ChartFiles/XmlChart.xml ;   if (File.Exists(Server.MapPath(filePathName)))   { chartXml = new Chart(width: 600,height: 400,templatePath: filePathName);   }   else {   chartXml = new Chart(width: 600,height: 400); chartXml.AddTitle( Chart Title -- Saved at   + DateTime.Now);   chartXml.AddSeries(   name:  Employee , axisLabel:  Name , xValue: new[] {  一月份 ,  二月份 ,  三月份 ,  四月份 ,  五月份 ,  六月份 ,  七月份 ,  八月份 ,  九月份 },   yValues: new[] {  2 ,  6 ,  4 ,  5 ,  3 , 4 , 9 , 2 , 5 }); chartXml.SaveXml(path: filePathName);   }   chartXml.Write(); } 


 

从上面代码们可以看到,可以通过templatePath将XML转换成Chart。通过SaveXml可以将Chart保存为XML。生成的XML如下:


 

代码


 

 Chart Width= 600  Height= 400     Series     Series Name= Employee  XValueType= String  YValueType= String  ChartArea= Default  AxisLabel= Name     Points     DataPoint YValues= 2  AxisLabel= 一月份  /     DataPoint YValues= 6  AxisLabel= 二月份  /     DataPoint YValues= 4  AxisLabel= 三月份  /     DataPoint YValues= 5  AxisLabel= 四月份  /     DataPoint YValues= 3  AxisLabel= 五月份  /     DataPoint YValues= 4  AxisLabel= 六月份  /     DataPoint YValues= 9  AxisLabel= 七月份  /     DataPoint YValues= 2  AxisLabel= 八月份  /     DataPoint YValues= 5  AxisLabel= 九月份  /     /Points     /Series     /Series     ChartAreas     ChartArea Name= Default     /ChartArea     /ChartAreas     Titles     Title Name= Title1  Text= Chart Title -- Saved at 2015/10/19 23:41:02     /Title     /Titles /Chart  


 

总结:本文就三个方面介绍了ASP.NET MVC 3 Beta中的Chart。包括它的数据源配置、显示以及保存。


 

原文标题:ASP.NET MVC 3 Beta初体验之超酷的Chart


 

链接:http://www.cnblogs.com/zhuqil/archive/2015/10/20/asp-net-mvc-3-chart.html

Xtreme Toolkit Pro - 界面套包 —正版、购买、下载、价格、销售、代理、授权、技术支持尽在控件中国网
 

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat