ASP.NET微软MsChart图表实例之绑定数据源和方法属性介绍
本例以科室计算机分布图为演示,介绍ASP.NET中如何使用MsChart图表展现数据,如何绑定数据源(连接数据库)和基本的MsChart图表使用方法
开发环境 VS2010
新建mschart.aspx页面,在工具箱-数据栏中拖放一个chart图表控件
代码如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mschart.aspx.cs" Inherits="demo_mschart" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Chart ID="Chart1" runat="server" EnableViewState="True"> <Series> <asp:Series Name="Series1" > </asp:Series> </Series> <Legends> <asp:Legend Alignment="Center" Docking="Bottom" Name="Legend1" Title="图例"> </asp:Legend> </Legends> <ChartAreas> <asp:ChartArea Name="ChartArea1"> </asp:ChartArea> </ChartAreas> </asp:Chart> </div> </form> </body> </html>
其中<Legends></Legends>标签对中的图例,默认是没有的,需要手动添加
ChartAreas表示图表绘图区域,Series表示最终看到的饼图、柱状图、线图、点图等构成的集合,可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。
数据源绑定
public DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();
SqlConnection sqlconstr = new SqlConnection();
sqlconstr.ConnectionString = "server=serverIP;database=databaseName;uid=username;pwd='password'";
SqlCommand cmd = sqlconstr.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
try
{
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
}
catch (Exception e)
{
Response.Write(e);
}
sqlconstr.Close();
return ds;
}
其中数据库连接语句sqlconstr.ConnectionString=”server=serverIP;database=databaseName;uid=username;pwd=’ password’ “;需要把serverIP,databaseName,username,password替换为用户自己的数据库IP地址、数据库名称、登录数据库用户名、密码。
设置坐标轴名称
Chart1.ChartAreas[0].AxisX.Title = "分布位置";//设置坐标轴名称 Chart1.ChartAreas[0].AxisY.Title = "数量";
坐标轴字体颜色
Chart1.ChartAreas[0].AxisX.TitleForeColor = Color.Blue;//设置坐标轴字体颜色 Chart1.ChartAreas[0].AxisY.TitleForeColor = Color.Blue;
隐藏辅助线(图表默认有辅助线)
Chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;//隐藏主要辅助线-X轴方向上的 Chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;//隐藏主要辅助线-Y轴方向上的
设置图表区域尺寸和图表样式
Chart1.Width=600;//设置图表区域尺寸 Chart1.Height=400; Chart1.Series[0].ChartType = SeriesChartType.Column;//设置图表样式,此处为柱状图
图表上直接显示数据和鼠标移动到图表上显示数据
Chart1.Series[0].ToolTip = "百分比" + "#PERCENT";//鼠标移动显示数据 Chart1.Series[0].IsValueShownAsLabel =true;//直接显示各项数据 Chart1.Series[0].Label = "#VALY" + "/" + "#TOTAL" + "#LEGENDTEXT";//直接显示各项数据
MsChart的Label的值的转义字符
#VALX 显示当前图例的X轴的对应文本(或数据) #VAL, #VALY, 显示当前图例的Y轴的对应文本(或数据) #VALY2, #VALY3, 显示当前图例的辅助Y轴的对应文本(或数据) #SER: 显示当前图例的名称 #LABEL 显示当前图例的标签文本 #INDEX 显示当前图例的索引 #PERCENT 显示当前图例的所占的百分比 #TOTAL 总数量 #LEGENDTEXT 图例文本
图表字体大小样式设置
Chart1.Titles[0].Font = new System.Drawing.Font("宋体", 12f);//设置图表标题字体样式和大小
图例停靠图表区域位置(顶部、底部、左侧、右侧)
Chart1.Legends["Legend1"].Docking = System.Web.UI.DataVisualization.Charting.Docking.Right;
完整功能代码mschart.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.ComponentModel;
using System.Web.UI.DataVisualization.Charting;
public partial class demo_mschart : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//动态添加图表标题
Chart1.Titles.Add("科室计算机分布图表");//设置图表名称
Chart1.ChartAreas[0].AxisX.Title = "分布位置";//设置坐标轴名称
Chart1.ChartAreas[0].AxisY.Title = "数量";
Chart1.ChartAreas[0].AxisX.TitleForeColor = Color.Blue;//设置坐标轴字体颜色
Chart1.ChartAreas[0].AxisY.TitleForeColor = Color.Blue;
Chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;//隐藏主要辅助线-X轴方向上的
Chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;//隐藏主要辅助线-Y轴方向上的
Chart1.Width=600;//设置图表尺寸
Chart1.Height=400;
Chart1.Series[0].ChartType = SeriesChartType.Column;//设置图表样式
//Chart1.Series["Series1"].ToolTip = "百分比"+"#PERCENT";//鼠标移动显示数据
Chart1.Series[0].ToolTip = "百分比" + "#PERCENT";//鼠标移动显示数据
Chart1.Series[0].IsValueShownAsLabel =true;//直接显示各项数据
Chart1.Series[0].Label = "#VALY" + "/" + "#TOTAL" + "#LEGENDTEXT";//直接显示各项数据
//获取各分布区数量
string sql = "select count(ksmc) as count,location from Mac_new group by location order by count";
Chart1.DataSource = GetDataSet(sql);
Chart1.Series[0].XValueMember ="location";
Chart1.Series[0].YValueMembers ="count";
Chart1.DataBind();
//Chart1.Series["Series1"].LabelToolTip = "#VALY";
//获取总数量
string sql2 = "select count(ksmc) from Mac_new ";
string sum = getsum(sql2).ToString();
//设置图表标题
Chart1.Titles[0].Text = "科室计算机分布图表 总数量 " + sum;
Chart1.Titles[0].Font = new System.Drawing.Font("宋体", 12f);//设置图表标题字体样式和大小
//设置图例停靠在图表区域的位置(顶部,底部,左侧,右侧)
Chart1.Legends["Legend1"].Docking = System.Web.UI.DataVisualization.Charting.Docking.Right;
}
public DataSet GetDataSet(string sql)
{
DataSet ds = new DataSet();
SqlConnection sqlconstr = new SqlConnection();
sqlconstr.ConnectionString = "server=serverIP;database=databaseName;uid=username;pwd='password'";//此处需要替换成用户自己的连接语句
SqlCommand cmd = sqlconstr.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
try
{
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
}
catch (Exception e)
{
Response.Write(e);
}
sqlconstr.Close();
return ds;
}
public string getsum(string sql)
{
SqlConnection sqlconstr = new SqlConnection();
sqlconstr.ConnectionString = "server=serverIP;database=databaseName;uid=username;pwd='password'";//此处需要替换成用户自己的连接语句
sqlconstr.Open();
SqlCommand aa_yjbqhj = new SqlCommand(sql, sqlconstr);
aa_yjbqhj.CommandTimeout = 180;
Double excute_yjbqhj = Convert.ToDouble(aa_yjbqhj.ExecuteScalar());//executescalar方法用来执行聚合函数,并得到结果
string sql2 = Convert.ToString(excute_yjbqhj);//将查询结果由int转变为string,赋值给控件
sqlconstr.Close();
return sql2;
}
/*
MSChart的Label的值的转义符,如下:
#VALX 显示当前图例的X轴的对应文本(或数据)
#VAL, #VALY, 显示当前图例的Y轴的对应文本(或数据)
#VALY2, #VALY3, 显示当前图例的辅助Y轴的对应文本(或数据)
#SER: 显示当前图例的名称
#LABEL 显示当前图例的标签文本
#INDEX 显示当前图例的索引
#PERCENT 显示当前图例的所占的百分比
#TOTAL 总数量
#LEGENDTEXT 图例文本
*/
}
本站weisico.com原创文章