一起谈.NET技术,ASP.NET MVC 3 Beta初体验之超酷的Chart

本文涉及的产品
数据可视化 DataV(企业版),20 个大屏 1 个月
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
简介:   前面一篇文章:ASP.NET MVC 3 Beta初体验之WebGrid介绍了WebGrid控件的使用,ASP.NET MVC 3 Beta中才内置Chart的。这篇文章中将介绍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代码:
 
  
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 2010/10/19 23:41:02" >
</ Title >
</ Titles >
</ Chart >
  总结:本文就三个方面介绍了ASP.NET MVC 3 Beta中的Chart。包括它的数据源配置、显示以及保存。
相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
目录
相关文章
|
2月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
|
2月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
|
3月前
|
自然语言处理 物联网 图形学
.NET 技术凭借其独特的优势和特性,为开发者们提供了一种高效、可靠且富有创造力的开发体验
本文深入探讨了.NET技术的独特优势及其在多个领域的应用,包括企业级应用、Web应用、桌面应用、移动应用和游戏开发。通过强大的工具集、高效的代码管理、跨平台支持及稳定的性能,.NET为开发者提供了高效、可靠的开发体验,并面对技术更新和竞争压力,不断创新发展。
147 7
|
3月前
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
61 5
|
3月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
60 4
|
3月前
|
开发框架 .NET C#
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位。从企业应用到电子商务,再到移动开发,.NET 均展现出卓越性能,助力开发者提升效率与项目质量,推动行业持续发展。
61 4
|
3月前
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
86 5
|
3月前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
59 3
|
3月前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
56 3
|
3月前
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
82 3

热门文章

最新文章