由于朋友需要把C1WebChart.替换掉,改用开源的ZedGraph控件.以下做一个示例,供大家参考:
步骤如下:
1、添加ZedGraph控件。如下图:
2、添加到控制面版。如下图:
3、制作用户控件。
a> 建立一个命名为: DrawGrap.ascx 用户控件。
b> 通过控制面版,把ZedGraphWeb拖到默认页面。 如下图:
c> 生成代码(DrawGrap.ascx)如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DrawGrap.ascx.cs" Inherits="DrawGrap" %>
<%@ Register TagPrefix="zgw" Namespace="ZedGraph.Web" Assembly="ZedGraph.Web" %>
<ZGW:ZEDGRAPHWEB id="zedGraphControl" runat="server" width="500" Height="375" RenderMode="ImageTag"/>
<%@ Register TagPrefix="zgw" Namespace="ZedGraph.Web" Assembly="ZedGraph.Web" %>
<ZGW:ZEDGRAPHWEB id="zedGraphControl" runat="server" width="500" Height="375" RenderMode="ImageTag"/>
d> 生成代码(DrawGrap.ascx.cs)如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using ZedGraph;
using ZedGraph.Web;
using System.Collections.Generic;
/**//// <summary>
/// 显示统计图形类型
/// </summary>
public enum AnalyticsType
...{
Line, //折线图
Bar, //柱状图
Pie //饼图
};
public partial class DrawGrap : System.Web.UI.UserControl
...{
Private Attribute#region Private Attribute
/**//// <summary>
/// 默认颜色种类
/// </summary>
private List<Color> defaultColors = new List<Color>();
/**//// <summary>
/// 统计的个数
/// </summary>
private int Count;
#endregion
Public Property#region Public Property
/**//// <summary>
/// 统计图的名称
/// </summary>
public string Title;
/**//// <summary>
/// 横轴的名称(饼图不需要)
/// </summary>
public string XAxisTitle;
/**//// <summary>
/// 纵轴的名称(饼图不需要)
/// </summary>
public string YAxisTitle;
/**//// <summary>
/// 显示的曲线类型:Line,Bar,Pie
/// </summary>
public AnalyticsType Type;
/**//// <summary>
/// 折线图和柱状图的数据源
/// </summary>
public List<PointPairList> DataSource = new List<PointPairList>();
/**//// <summary>
/// 饼图的数据源
/// </summary>
public List<double> ScaleData = new List<double>();
/**//// <summary>
/// 各段数据的颜色
/// </summary>
public List<Color> Colors = new List<Color>();
/**//// <summary>
/// 各段数据的名称
/// </summary>
public List<string> NameList = new List<string>();
/**//// <summary>
/// 用于柱状图,每个圆柱体表示的含义
/// </summary>
public List<string> LabelList = new List<string>();
#endregion
protected void Page_Load(object sender, EventArgs e)
...{
zedGraphControl.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(zedGraphControl_RenderGraph);
}
private void InitDefaultColors()
...{
defaultColors.Add(Color.Red);
defaultColors.Add(Color.Green);
defaultColors.Add(Color.Blue);
defaultColors.Add(Color.Yellow);
defaultColors.Add(Color.YellowGreen);
defaultColors.Add(Color.Brown);
defaultColors.Add(Color.Aqua);
defaultColors.Add(Color.Cyan);
defaultColors.Add(Color.DarkSeaGreen);
defaultColors.Add(Color.Indigo);
}
/**//// <summary>
/// 如果属性为空则初始化属性数据
/// </summary>
private void InitProperty()
...{
InitDefaultColors();
if (string.IsNullOrEmpty(Title))
...{
Title = "未命名统计图";
}
if (string.IsNullOrEmpty(XAxisTitle))
...{
XAxisTitle = "横轴";
}
if (string.IsNullOrEmpty(YAxisTitle))
...{
YAxisTitle = "纵轴";
}
if (Type == AnalyticsType.Pie)
...{
Count = ScaleData.Count;
}
else
...{
Count = DataSource.Count;
}
if (Colors.Count == 0 || Colors.Count != Count)
...{
Random r = new Random();
int tempIndex = 0;
List<int> tempIndexList = new List<int>();
for (int i = 0; i < Count; i++)
...{
tempIndex = r.Next(defaultColors.Count);
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using ZedGraph;
using ZedGraph.Web;
using System.Collections.Generic;
/**//// <summary>
/// 显示统计图形类型
/// </summary>
public enum AnalyticsType
...{
Line, //折线图
Bar, //柱状图
Pie //饼图
};
public partial class DrawGrap : System.Web.UI.UserControl
...{
Private Attribute#region Private Attribute
/**//// <summary>
/// 默认颜色种类
/// </summary>
private List<Color> defaultColors = new List<Color>();
/**//// <summary>
/// 统计的个数
/// </summary>
private int Count;
#endregion
Public Property#region Public Property
/**//// <summary>
/// 统计图的名称
/// </summary>
public string Title;
/**//// <summary>
/// 横轴的名称(饼图不需要)
/// </summary>
public string XAxisTitle;
/**//// <summary>
/// 纵轴的名称(饼图不需要)
/// </summary>
public string YAxisTitle;
/**//// <summary>
/// 显示的曲线类型:Line,Bar,Pie
/// </summary>
public AnalyticsType Type;
/**//// <summary>
/// 折线图和柱状图的数据源
/// </summary>
public List<PointPairList> DataSource = new List<PointPairList>();
/**//// <summary>
/// 饼图的数据源
/// </summary>
public List<double> ScaleData = new List<double>();
/**//// <summary>
/// 各段数据的颜色
/// </summary>
public List<Color> Colors = new List<Color>();
/**//// <summary>
/// 各段数据的名称
/// </summary>
public List<string> NameList = new List<string>();
/**//// <summary>
/// 用于柱状图,每个圆柱体表示的含义
/// </summary>
public List<string> LabelList = new List<string>();
#endregion
protected void Page_Load(object sender, EventArgs e)
...{
zedGraphControl.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(zedGraphControl_RenderGraph);
}
private void InitDefaultColors()
...{
defaultColors.Add(Color.Red);
defaultColors.Add(Color.Green);
defaultColors.Add(Color.Blue);
defaultColors.Add(Color.Yellow);
defaultColors.Add(Color.YellowGreen);
defaultColors.Add(Color.Brown);
defaultColors.Add(Color.Aqua);
defaultColors.Add(Color.Cyan);
defaultColors.Add(Color.DarkSeaGreen);
defaultColors.Add(Color.Indigo);
}
/**//// <summary>
/// 如果属性为空则初始化属性数据
/// </summary>
private void InitProperty()
...{
InitDefaultColors();
if (string.IsNullOrEmpty(Title))
...{
Title = "未命名统计图";
}
if (string.IsNullOrEmpty(XAxisTitle))
...{
XAxisTitle = "横轴";
}
if (string.IsNullOrEmpty(YAxisTitle))
...{
YAxisTitle = "纵轴";
}
if (Type == AnalyticsType.Pie)
...{
Count = ScaleData.Count;
}
else
...{
Count = DataSource.Count;
}
if (Colors.Count == 0 || Colors.Count != Count)
...{
Random r = new Random();
int tempIndex = 0;
List<int> tempIndexList = new List<int>();
for (int i = 0; i < Count; i++)
...{
tempIndex = r.Next(defaultColors.Count);