网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

ASP.NETMVC3Beta初体验之超酷的Chart【附完整示例代码】

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

前面一篇文章: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代码:

  1. public ActionResult BasicChart() 
  2.     return View(); 

BasicChart.cshtml代码:

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

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

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

  1. public ActionResult ShowBasicChart() 
  2.     return View(); 

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

  1. <p><img src="BasicChart" /> </p> 

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

第二种方式:数据库查询

示例:

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

  第三种方式:XML
示例:

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

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

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

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

效果:

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

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

效果:

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

  1. @{      
  2.     var chartKey = Request["key"];  
  3.     if (chartKey != null)  
  4.     {         
  5.             var cachedChart = Chart.GetFromCache(key: chartKey);   
  6.             if (cachedChart == null)  
  7.             {   
  8.                  cachedChart = new Chart(600, 400);     
  9.                  cachedChart.AddTitle("Cached Chart -- Cached at " + DateTime.Now);  
  10.                  cachedChart.AddSeries(                
  11.                  name: "Employee",    
  12.                  axisLabel: "Name",         
  13.                  xValue: new { 
  14.                "一月份""二月份""三月份""四月份""五月份""六月份""七月份""八月份""九月份"},  
  15.                  yValues: new { "2""6""4""5""3","4","9","2","5"});       
  16.                  cachedChart.SaveToCache(key: chartKey,minutesToCache: 2, 
  17.                 slidingExpiration: false);      
  18.              }       
  19.             Chart.WriteFromCache(chartKey);   
  20.      }  
  21.    } 

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

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

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

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

保存之后的图片:

将Chart保存为保存为XML:

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

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

  1. <Chart Width="600" Height="400"
  2.   <Series> 
  3.     <Series Name="Employee" XValueType="String"  
  4.        YValueType="String" ChartArea="Default" AxisLabel="Name"
  5.       <Points> 
  6.         <DataPoint YValues="2" AxisLabel="一月份" /> 
  7.         <DataPoint YValues="6" AxisLabel="二月份" /> 
  8.         <DataPoint YValues="4" AxisLabel="三月份" /> 
  9.         <DataPoint YValues="5" AxisLabel="四月份" /> 
  10.         <DataPoint YValues="3" AxisLabel="五月份" /> 
  11.         <DataPoint YValues="4" AxisLabel="六月份" /> 
  12.         <DataPoint YValues="9" AxisLabel="七月份" /> 
  13.         <DataPoint YValues="2" AxisLabel="八月份" /> 
  14.         <DataPoint YValues="5" AxisLabel="九月份" /> 
  15.       </Points> 
  16.     </Series> 
  17.   </Series> 
  18.   <ChartAreas> 
  19.     <ChartArea Name="Default"
  20.     </ChartArea> 
  21.   </ChartAreas> 
  22.   <Titles> 
  23.     <Title Name="Title1" Text="Chart Title -- Saved at 2010/10/19 23:41:02"
  24.     </Title> 
  25.   </Titles> 
  26. </Chart> 

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

设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师