代码
1 public delegate string SetXColumnHandler(string ora_Str);
2 public class ChartHelper
3 {
4 public event SetXColumnHandler OnSetXColumn;
5 public string SetXColumn(string ora_str)
6 {
7 if (OnSetXColumn != null)
8 {
9 return OnSetXColumn(ora_str);
10 }
11 return ora_str;
12 }
13
14 public void Create(Chart chart, string title, DataTable table, string xColumn, string yColumn, string style, bool user3D)
15 {
16 chart.Palette = new Color[] { Color.FromArgb(49, 255, 49), Color.FromArgb(255, 255, 0), Color.FromArgb(255, 99, 49), Color.FromArgb(0, 156, 255),
17 Color.FromArgb(255, 125, 49), Color.FromArgb(125, 255, 49), Color.FromArgb(0, 255, 49) };
18 chart.Use3D = user3D;
19 SeriesCollection mySC = getRandomData(table, xColumn, yColumn);
20 if (string.IsNullOrEmpty(style) || style == "线形")
21 {
22 chart.Type = ChartType.Combo;
23 mySC = getRandomData2(table, xColumn, yColumn);
24 }
25 else if (style == "柱形")
26 {
27 chart.Type = ChartType.Combo;
28 }
29 else if (style == "金字塔")
30 {
31 chart.Type = ChartType.MultipleGrouped;
32 chart.DefaultSeries.Type = SeriesTypeMultiple.Pyramid;
33 }
34 else if (style == "圆锥")
35 {
36 chart.Type = ChartType.MultipleGrouped;
37 chart.DefaultSeries.Type = SeriesTypeMultiple.Cone;
38 }
39 chart.Title = title;
40 if (string.IsNullOrEmpty(style) || style == "线形")
41 {
42 chart.DefaultSeries.Type = SeriesType.Line;
43 }
44
45 chart.DefaultElement.ShowValue = true;
46 chart.PieLabelMode = PieLabelMode.Outside;
47 chart.ShadingEffectMode = ShadingEffectMode.Three;
48 chart.NoDataLabel.Text = "没有数据显示";
49 chart.SeriesCollection.Add(mySC);
50 }
51 public void Create(Chart chart, string title, List<DataTable> tables, List<DateTime> dates, string xColumn, string yColumn, string style, bool user3D,string targetUrl)
52 {
53 chart.Palette = new Color[] { Color.FromArgb(49, 255, 49), Color.FromArgb(255, 255, 0), Color.FromArgb(255, 99, 49), Color.FromArgb(0, 156, 255),
54 Color.FromArgb(255, 125, 49), Color.FromArgb(125, 255, 49), Color.FromArgb(0, 255, 49) };
55 chart.Use3D = user3D;
56 chart.Type = ChartType.Combo;
57 chart.Title = title;
58 chart.DefaultSeries.Type = SeriesTypeMultiple.Pyramid;
59 SeriesCollection SC = new SeriesCollection();
60
61 for (int i = 0; i < dates.Count; i++)
62 {
63 string dtStr = dates[i].ToString("yyyy-MM-dd");
64 Series s = new Series(dtStr);
65 foreach (DataRow r in tables[i].Rows)
66 {
67 Element e = new Element(r[xColumn].ToString());
68 e.URLTarget = "_self";
69 e.LegendEntry.URL = string.Concat(targetUrl, dtStr);
70 e.LegendEntry.URLTarget = "_self";
71 e.URL = string.Concat(targetUrl,dtStr);
72 e.YValue = Convert.ToDouble(r[yColumn]);
73 s.Elements.Add(e);
74 SC.Add(s);
75 }
76 }
77 chart.DefaultElement.ShowValue = true;
78 if (string.IsNullOrEmpty(style) || style == "线形")
79 {
80 chart.DefaultSeries.Type = SeriesType.Line;
81 }
82 chart.PieLabelMode = PieLabelMode.Outside;
83 chart.ShadingEffectMode = ShadingEffectMode.Three;
84 chart.NoDataLabel.Text = "没有数据显示";
85 chart.SeriesCollection.Add(SC);
86
87 }
88 SeriesCollection getRandomData(DataTable table, string x,string y)
89 {
90 SeriesCollection SC = new SeriesCollection();
91 foreach (DataRow r in table.Rows)
92 {
93 Series s = new Series(r[x].ToString());
94 Element e = new Element(r[x].ToString());
95 e.YValue = Convert.ToDouble(r[y]);
96 s.Elements.Add(e);
97 SC.Add(s);
98 }
99 return SC;
100 }
101 SeriesCollection getRandomData2(DataTable table, string x, string y)
102 {
103 SeriesCollection SC = new SeriesCollection();
104 Series s = new Series();
105 foreach (DataRow r in table.Rows)
106 {
107 Element e = new Element(r[x].ToString());
108 e.YValue = Convert.ToDouble(r[y]);
109 s.Elements.Add(e);
110 }
111 SC.Add(s);
112 return SC;
113 }
114
115 public void Pie(dotnetCHARTING.Chart chart, int width, int height, string title,DataTable table, string xColumn, string yColumn)
116 {
117
118 SeriesCollection SC = new SeriesCollection();
119 Series s = new Series("");
120 DataView view = new DataView(table);
121 view.Sort = yColumn + " desc";
122 int index = 0;
123 DataTable table2 = view.ToTable();
124 Element otherE = new Element("其他");
125
126 bool other = false;
127 double otherSum = 0;
128 foreach (DataRow row in table2.Rows)
129 {
130 if (index > 9)
131 {
132 otherSum += Convert.ToDouble(row[yColumn].ToString());
133 otherE.LabelTemplate = "%PercentOfTotal";
134 other = true;
135 continue;
136 }
137 string telType = row[xColumn].ToString();
138 telType = SetXColumn(telType);
139 Element e = new Element(telType);
140 e.LabelTemplate = "%PercentOfTotal";
141
142 e.YValue = Convert.ToDouble(row[yColumn].ToString());
143 s.Elements.Add(e);
144 index
2 public class ChartHelper
3 {
4 public event SetXColumnHandler OnSetXColumn;
5 public string SetXColumn(string ora_str)
6 {
7 if (OnSetXColumn != null)
8 {
9 return OnSetXColumn(ora_str);
10 }
11 return ora_str;
12 }
13
14 public void Create(Chart chart, string title, DataTable table, string xColumn, string yColumn, string style, bool user3D)
15 {
16 chart.Palette = new Color[] { Color.FromArgb(49, 255, 49), Color.FromArgb(255, 255, 0), Color.FromArgb(255, 99, 49), Color.FromArgb(0, 156, 255),
17 Color.FromArgb(255, 125, 49), Color.FromArgb(125, 255, 49), Color.FromArgb(0, 255, 49) };
18 chart.Use3D = user3D;
19 SeriesCollection mySC = getRandomData(table, xColumn, yColumn);
20 if (string.IsNullOrEmpty(style) || style == "线形")
21 {
22 chart.Type = ChartType.Combo;
23 mySC = getRandomData2(table, xColumn, yColumn);
24 }
25 else if (style == "柱形")
26 {
27 chart.Type = ChartType.Combo;
28 }
29 else if (style == "金字塔")
30 {
31 chart.Type = ChartType.MultipleGrouped;
32 chart.DefaultSeries.Type = SeriesTypeMultiple.Pyramid;
33 }
34 else if (style == "圆锥")
35 {
36 chart.Type = ChartType.MultipleGrouped;
37 chart.DefaultSeries.Type = SeriesTypeMultiple.Cone;
38 }
39 chart.Title = title;
40 if (string.IsNullOrEmpty(style) || style == "线形")
41 {
42 chart.DefaultSeries.Type = SeriesType.Line;
43 }
44
45 chart.DefaultElement.ShowValue = true;
46 chart.PieLabelMode = PieLabelMode.Outside;
47 chart.ShadingEffectMode = ShadingEffectMode.Three;
48 chart.NoDataLabel.Text = "没有数据显示";
49 chart.SeriesCollection.Add(mySC);
50 }
51 public void Create(Chart chart, string title, List<DataTable> tables, List<DateTime> dates, string xColumn, string yColumn, string style, bool user3D,string targetUrl)
52 {
53 chart.Palette = new Color[] { Color.FromArgb(49, 255, 49), Color.FromArgb(255, 255, 0), Color.FromArgb(255, 99, 49), Color.FromArgb(0, 156, 255),
54 Color.FromArgb(255, 125, 49), Color.FromArgb(125, 255, 49), Color.FromArgb(0, 255, 49) };
55 chart.Use3D = user3D;
56 chart.Type = ChartType.Combo;
57 chart.Title = title;
58 chart.DefaultSeries.Type = SeriesTypeMultiple.Pyramid;
59 SeriesCollection SC = new SeriesCollection();
60
61 for (int i = 0; i < dates.Count; i++)
62 {
63 string dtStr = dates[i].ToString("yyyy-MM-dd");
64 Series s = new Series(dtStr);
65 foreach (DataRow r in tables[i].Rows)
66 {
67 Element e = new Element(r[xColumn].ToString());
68 e.URLTarget = "_self";
69 e.LegendEntry.URL = string.Concat(targetUrl, dtStr);
70 e.LegendEntry.URLTarget = "_self";
71 e.URL = string.Concat(targetUrl,dtStr);
72 e.YValue = Convert.ToDouble(r[yColumn]);
73 s.Elements.Add(e);
74 SC.Add(s);
75 }
76 }
77 chart.DefaultElement.ShowValue = true;
78 if (string.IsNullOrEmpty(style) || style == "线形")
79 {
80 chart.DefaultSeries.Type = SeriesType.Line;
81 }
82 chart.PieLabelMode = PieLabelMode.Outside;
83 chart.ShadingEffectMode = ShadingEffectMode.Three;
84 chart.NoDataLabel.Text = "没有数据显示";
85 chart.SeriesCollection.Add(SC);
86
87 }
88 SeriesCollection getRandomData(DataTable table, string x,string y)
89 {
90 SeriesCollection SC = new SeriesCollection();
91 foreach (DataRow r in table.Rows)
92 {
93 Series s = new Series(r[x].ToString());
94 Element e = new Element(r[x].ToString());
95 e.YValue = Convert.ToDouble(r[y]);
96 s.Elements.Add(e);
97 SC.Add(s);
98 }
99 return SC;
100 }
101 SeriesCollection getRandomData2(DataTable table, string x, string y)
102 {
103 SeriesCollection SC = new SeriesCollection();
104 Series s = new Series();
105 foreach (DataRow r in table.Rows)
106 {
107 Element e = new Element(r[x].ToString());
108 e.YValue = Convert.ToDouble(r[y]);
109 s.Elements.Add(e);
110 }
111 SC.Add(s);
112 return SC;
113 }
114
115 public void Pie(dotnetCHARTING.Chart chart, int width, int height, string title,DataTable table, string xColumn, string yColumn)
116 {
117
118 SeriesCollection SC = new SeriesCollection();
119 Series s = new Series("");
120 DataView view = new DataView(table);
121 view.Sort = yColumn + " desc";
122 int index = 0;
123 DataTable table2 = view.ToTable();
124 Element otherE = new Element("其他");
125
126 bool other = false;
127 double otherSum = 0;
128 foreach (DataRow row in table2.Rows)
129 {
130 if (index > 9)
131 {
132 otherSum += Convert.ToDouble(row[yColumn].ToString());
133 otherE.LabelTemplate = "%PercentOfTotal";
134 other = true;
135 continue;
136 }
137 string telType = row[xColumn].ToString();
138 telType = SetXColumn(telType);
139 Element e = new Element(telType);
140 e.LabelTemplate = "%PercentOfTotal";
141
142 e.YValue = Convert.ToDouble(row[yColumn].ToString());
143 s.Elements.Add(e);
144 index
作者: orifice
- 该日志由 orifice 于11年前发表在综合分类下,最后更新于 2013年06月04日.
- 转载请注明: NET-数据图形展示的通用类 | 学步园 +复制链接
抱歉!评论已关闭.