轉(zhuǎn)帖|其它|編輯:郝浩|2010-08-30 13:46:29.000|閱讀 1226 次
概述:項(xiàng)目中有報(bào)表圖形化的需求, 于是開(kāi)始在網(wǎng)上找第三方chart控件。因時(shí)間緊迫,大至確定了幾個(gè)候選:一、Office帶的OWC控件;二、ComponentOne;三、Web Chart。本文將講解ASP.NET報(bào)表控件。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
項(xiàng)目中有報(bào)表圖形化的需求, 于是開(kāi)始在網(wǎng)上找第三方chart控件。因時(shí)間緊迫,大至確定了幾個(gè)候選:一、Office帶的OWC控件;二、ComponentOne;三、Web Chart。本文將講解ASP.NET報(bào)表控件。
OWC似乎使用者居多,但看見(jiàn)有網(wǎng)友在帖中抱怨OWC在使用時(shí)需要許可證書(shū),于是將其排除,我可不想BOSS在看報(bào)表時(shí)彈出一個(gè)“沒(méi)有許可證書(shū)”的窗口。
接著找到了ComponentOne的Web chart做出的各種效果圖,效果極佳。我一下子被迷住了,決定就是它,于是馬不停蹄的下了最新版100多M的安裝文件,又花一上午找了個(gè)可以用的注冊(cè)碼,再找了篇教程,OK萬(wàn)事俱備,興匆匆的開(kāi)始寫代碼。需求不復(fù)雜,在一個(gè)頁(yè)面上畫出多條折線圖即可,根據(jù)以往經(jīng)驗(yàn),這種大型商業(yè)共享軟件在官方站點(diǎn)上看兩個(gè)Example頂多一小時(shí)絕對(duì)能搞定的。但結(jié)果讓我非常的惱火,官方的Example簡(jiǎn)單的它偏不提供,弄些什么AJAX的,一大堆實(shí)現(xiàn)輔助效果的代碼,你要找的核心的那三四行打死也找不到,好像就怕你一下子把它的Example看明白了。歷來(lái)討厭這種軟件。于是卸載、刪除......等全部弄完,一天過(guò)去了。
還好,后來(lái)找到了Web Chart。代碼超簡(jiǎn)潔,效果也還不錯(cuò),寫些簡(jiǎn)單的ASP.NET報(bào)表控件示例供大家參考:
ASP.NET報(bào)表控件一、折線圖
1.//引用命名空間
2.using WebChart;
3.
4.//定義一個(gè)顏色數(shù)組,供循環(huán)時(shí)為不同的記錄填充不同的顏色
5.private string[] myColor = new string[]
6.{
7. "Tomato",//西紅柿
8. "Black",
9. "Gold",
10. "Blue",
11. "Green",
12. "Orange",
13. "Pink",//粉紅
14. "Violet",//紫羅蘭
15. "Orchid",//淡紫色
16. "Lime",//亮綠
17. "Tan",//茶色
18. "Red",
19. "Navy"//橘紅
20.};
21.
22.//用靜態(tài)方式示例了畫出一條兩個(gè)點(diǎn)的最簡(jiǎn)單折線.實(shí)際項(xiàng)目據(jù)此做循環(huán)而以.
23.private void doIt()
24.{
25. //創(chuàng)建折線對(duì)象
26. LineChart myChart = new LineChart();
27. //為折線填充顏色
28. myChart.Line.Color = Color.FromName(myColor[0]);
29. myChart.Fill.Color = Color.FromName(myColor[0]);
30. myChart.LineMarker = new DiamondLineMarker(8, Color.FromName(myColor[0]), Color.FromName(myColor[0]));
31. //圖例說(shuō)明
32. myChart.Legend = "折線一";
33. //添加第一個(gè)點(diǎn),參數(shù)一為x座標(biāo)上的名稱,參數(shù)二為y座標(biāo)上的值
34. myChart.Data.Add(new ChartPoint("一", float.Parse("100")));
35. //添加第二個(gè)點(diǎn)
36. myChart.Data.Add(new ChartPoint("二", float.Parse("200")));
37. //chart為控件ID
38. this.chart.Charts.Add(myChart);
39. this.chart.RedrawChart();
40.}
ASP.NET報(bào)表控件二、柱狀圖
41.//顏色數(shù)組
42.private string[] myColor = new string[]
43.{
44. "Fuchsia",
45. "Black",
46. "Gold",
47. "Blue",
48. "HotPink",
49. "Orange",
50. "Peru",
51. "DodgerBlue",
52. "Lime",
53. "Tan",
54. "Red",
55. "GreenYellow",
56. "DarkGreen",
57. "DimGray",
58. "Orchid"
59.};
60.
61.//調(diào)用該方法生成柱狀圖
62.private void bindchart()
63.{
64. //獲取一個(gè)DataTable,具體函數(shù)略...
65. DataTable dt = this.getdt();
66. if (dt != null)
67. {
68. if (dt.Rows.Count > 0)
69. {
70. //遍歷DataTable為每條記錄生成一個(gè)柱狀
71. for (int i = 0; i < dt.Rows.Count; i++)
72. {
73. //創(chuàng)建對(duì)象
74. ColumnChart mychart = new ColumnChart();
75. //設(shè)置柱子寬度
76. mychart.MaxColumnWidth = 48;
77. //顏色
78. mychart.Fill.Color = Color.FromName(this.myColor[i]);
79. //在柱子上顯示數(shù)量
80. mychart.DataLabels.Visible = true;
81. //數(shù)量的字體
82. mychart.DataLabels.Font = new Font("Verdana", 14);
83. //添加
84. mychart.Data.Add(new ChartPoint("", float.Parse(dt.Rows[i]["num"].ToString())));
85. //備注
86. mychart.Legend = dt.Rows[i]["name"].ToString();
87. this.chart.Charts.Add(mychart);
88. }
89. //輔助設(shè)置
90. //背景色
91. chart.Background.Color = Color.FromArgb(165, 0, 16);
92. chart.YAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
93. chart.XAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
94. //內(nèi)部線條
95. chart.Border.Color = Color.FromArgb(200, 200, 200);
96. //邊框樣式
97. chart.BorderStyle = BorderStyle.None;
98. //y最大值
99. double max = double.Parse(dt.Compute("MAX(num)","").ToString());
100. //遞增值
101. int intv = 2;
102.
103. //數(shù)量小于16的情況
104. if (max < 16)
105. {
106. max = 16;
107. }
108. //大于16的情況
109. else
110. {
111. intintv = int.Parse(Math.Ceiling(max/8).ToString());
112. max += intv;
113. }
114.
115. //設(shè)置Y軸終點(diǎn)值
116. chart.YCustomEnd = int.Parse(max.ToString());
117. //y遞增值
118. chart.YValuesInterval = intv;
119.
120. //生成
121. this.chart.RedrawChart();
122. }
123. }
124.}
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載