ASP.NET使用第三方库实现js图表
2011-07-13 10:58
483 查看
准备工作
首先从http://jquery.com/下载最新版本的jQuery,然后从http://www.highcharts.com/下载Highcharts的JavaScript类库。将这两个文件下载到本地的Web项目的JS文件下。
因 为Highcharts是根据js脚本中的属性设置来生成图表的,因为我们需要在ASP.NET中输出这些脚本。为了方便,周公将生成各种图表的核心逻辑 部分抽取出来作为一个模板,需要的时候从这些模板中读取数据,然后将模板中的标签替换掉,这样就可以输出到客户端了。这些带有标签的JS模板位于 js/template目录下。
除了输出控制逻辑代码之外,还要在网页的ready客户端事件中调用,如下格式:
$(document).ready(function() {//这里是逻辑和控制代码});
编码
为了便于演示,我在创建ASP.NET页面的时候使用了单页模式,整个页面的代码如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.IO" %> 硬件资讯
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<mce:script runat="server"><!--
public string result = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
string graphType = ddlGraphType.SelectedValue;
graphType = graphType.ToLower();
switch (graphType)
{
case "line": result=OutputLine(); break;
case "spline": result = OutputSpline(); break;
case "area": result = OutputArea(); break;
case "areaspline": result = OutputAreaSpline(); break;
case "column": result = OutputColumn(); break;
case "bar": result = OutputBar(); break;
case "pie": result = OutputPie(); break;
case "scatter": result = OutputScatter(); break;
}
}
private string OutputLine()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/line.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputSpline()
{ 女装品牌排行榜
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/spline.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputArea()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/area.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputAreaSpline()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/areaspline.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputColumn()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/column.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputBar()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/bar.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
buffer.Replace("{#subTitle#}", "扇形图表");
//下面的数据应该是从数据库来,为了演示,这里直接上了
string data = "{name: '1812年',data: [107, 31, 635, 203, 2]}, {name: '1912年',data: [133, 156, 947, 408, 6]}, {name: '2012年',data: [973, 914, 4054, 732, 34]}";
buffer.Replace("{#series#}", data);
result = buffer.ToString();
}
return result;
}
private string OutputPie()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/pie.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputScatter()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/scatter.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
// --></mce:script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hign Charts 实例</title>
<mce:script src="js/jquery-1.5.2.min.js" mce_src="js/jquery-1.5.2.min.js" type="text/javascript"></mce:script>
<mce:script src="js/highcharts.js" mce_src="js/highcharts.js" type="text/javascript"></mce:script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="0" width="800">
<tr><td>请选择图表类型:<asp:DropDownList runat="server" ID="ddlGraphType"
AutoPostBack="True">
<asp:ListItem>line</asp:ListItem>
<asp:ListItem>spline</asp:ListItem>
<asp:ListItem>area</asp:ListItem>
<asp:ListItem>areaspline</asp:ListItem>
<asp:ListItem>column</asp:ListItem>
<asp:ListItem>bar</asp:ListItem>
<asp:ListItem>pie</asp:ListItem>
<asp:ListItem>scatter</asp:ListItem>
</asp:DropDownList></td></tr>
<tr><td><div id="container" style="width: 800px; height: 400px; margin: 0 auto"></div></td></tr>
</table>
</div>
</form>
<mce:script type="text/javascript"><!--
var chart;
$(document).ready(function() {
<%=result %>
});
// --></mce:script>
</body>
</html>
首先从http://jquery.com/下载最新版本的jQuery,然后从http://www.highcharts.com/下载Highcharts的JavaScript类库。将这两个文件下载到本地的Web项目的JS文件下。
因 为Highcharts是根据js脚本中的属性设置来生成图表的,因为我们需要在ASP.NET中输出这些脚本。为了方便,周公将生成各种图表的核心逻辑 部分抽取出来作为一个模板,需要的时候从这些模板中读取数据,然后将模板中的标签替换掉,这样就可以输出到客户端了。这些带有标签的JS模板位于 js/template目录下。
除了输出控制逻辑代码之外,还要在网页的ready客户端事件中调用,如下格式:
$(document).ready(function() {//这里是逻辑和控制代码});
编码
为了便于演示,我在创建ASP.NET页面的时候使用了单页模式,整个页面的代码如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.IO" %> 硬件资讯
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<mce:script runat="server"><!--
public string result = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
string graphType = ddlGraphType.SelectedValue;
graphType = graphType.ToLower();
switch (graphType)
{
case "line": result=OutputLine(); break;
case "spline": result = OutputSpline(); break;
case "area": result = OutputArea(); break;
case "areaspline": result = OutputAreaSpline(); break;
case "column": result = OutputColumn(); break;
case "bar": result = OutputBar(); break;
case "pie": result = OutputPie(); break;
case "scatter": result = OutputScatter(); break;
}
}
private string OutputLine()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/line.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputSpline()
{ 女装品牌排行榜
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/spline.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputArea()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/area.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputAreaSpline()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/areaspline.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputColumn()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/column.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputBar()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/bar.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
buffer.Replace("{#subTitle#}", "扇形图表");
//下面的数据应该是从数据库来,为了演示,这里直接上了
string data = "{name: '1812年',data: [107, 31, 635, 203, 2]}, {name: '1912年',data: [133, 156, 947, 408, 6]}, {name: '2012年',data: [973, 914, 4054, 732, 34]}";
buffer.Replace("{#series#}", data);
result = buffer.ToString();
}
return result;
}
private string OutputPie()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/pie.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
private string OutputScatter()
{
string result = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/js/template/scatter.js"), Encoding.UTF8))
{
StringBuilder buffer = new StringBuilder(reader.ReadToEnd());
buffer.Replace("{#title#}", "周公的演示例子");
result = buffer.ToString();
}
return result;
}
// --></mce:script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hign Charts 实例</title>
<mce:script src="js/jquery-1.5.2.min.js" mce_src="js/jquery-1.5.2.min.js" type="text/javascript"></mce:script>
<mce:script src="js/highcharts.js" mce_src="js/highcharts.js" type="text/javascript"></mce:script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="0" width="800">
<tr><td>请选择图表类型:<asp:DropDownList runat="server" ID="ddlGraphType"
AutoPostBack="True">
<asp:ListItem>line</asp:ListItem>
<asp:ListItem>spline</asp:ListItem>
<asp:ListItem>area</asp:ListItem>
<asp:ListItem>areaspline</asp:ListItem>
<asp:ListItem>column</asp:ListItem>
<asp:ListItem>bar</asp:ListItem>
<asp:ListItem>pie</asp:ListItem>
<asp:ListItem>scatter</asp:ListItem>
</asp:DropDownList></td></tr>
<tr><td><div id="container" style="width: 800px; height: 400px; margin: 0 auto"></div></td></tr>
</table>
</div>
</form>
<mce:script type="text/javascript"><!--
var chart;
$(document).ready(function() {
<%=result %>
});
// --></mce:script>
</body>
</html>
相关文章推荐
- 在ASP.NET中使用Highcharts js图表
- asp.net 使用js分页实现异步加载数据
- 使用rewrite 让php 实现类似asp.net 的IHttpModule 进行带参数js文件的参数获取
- asp.net下使用C#实现动态绘制图表
- Asp.net + js 异步上传文件的例子 - 使用iframe实现
- 在ASP.NET中使用Highcharts js图表
- asp.net 使用js分页实现异步加载数据
- 使用JS实现文件下载示例(asp.net)
- 使用js实现 Asp.net下的局部打印
- ASP.NET MVC中使用JS实现不对称加密密码传输
- ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传
- 在ASP.NET中使用Highcharts js图表
- ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知的示例代码
- 使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现
- ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传
- 【asp.net 】使用js结合hidden控件实现在后台运行一段程序后提示确认,确认通过后继续执行后台代码~~~
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- asp.net中Datalist使用数字分页的实现方法
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(2)
- ASP.NET Core依赖注入解读&使用Autofac替代实现