淺談ASP.NET報表控制項作者:管理員 來源:51CTO 瀏覽:360 發布時間:2010-6-19 0:26:07
OWC似乎使用者居多,但看見有網友在帖中抱怨OWC在使用時需要許可認證,於是將其排除,我可不想BOSS在看報表時彈出一個“沒有許可認證”的視窗。
接著找到了ComponentOne的Web chart做出的各種,效果極佳。我一下子被迷住了,決定就是它,於是馬不停蹄的下了最新版100多M的安裝檔案,又花一上午找了個可以用的註冊碼,再找了篇教程,OK萬事俱備,興匆匆的開始寫代碼。需求不複雜,在一個頁面上畫出多條折線圖即可,根據以往經驗,這種大型商業共用軟體在官方網站上看兩個Example頂多一小時絕對能搞定的。但結果讓我非常的惱火,官方的Example簡單的它偏不提供,弄些什麼AJAX的,一大堆實現輔助效果的代碼,你要找的核心的那三四行打死也找不到,好像就怕你一下子把它的Example看明白了。曆來討厭這種軟體。於是卸載、刪除......等全部弄完,一天過去了。
還好,後來找到了Web Chart。代碼超簡潔,效果也還不錯,寫些簡單的ASP.NET報表控制項樣本供大家參考:
ASP.NET報表控制項一、折線圖
- //引用命名空間
- using WebChart;
-
- //定義一個顏色數組,供迴圈時為不同的記錄填充不同的顏色
- private string[] myColor = new string[]
- {
- "Tomato",//西紅柿
- "Black",
- "Gold",
- "Blue",
- "Green",
- "Orange",
- "Pink",//粉紅
- "Violet",//紫羅蘭
- "Orchid",//淡紫色
- "Lime",//亮綠
- "Tan",//茶色
- "Red",
- "Navy"//橘紅
- };
-
- //用靜態方式樣本了畫出一條兩個點的最簡單折線.實際項目據此做迴圈而以.
- private void doIt()
- {
- //建立折線對象
- LineChart myChart = new LineChart();
- //為折線填充顏色
- myChart.Line.Color = Color.FromName(myColor[0]);
- myChart.Fill.Color = Color.FromName(myColor[0]);
- myChart.LineMarker = new DiamondLineMarker(8, Color.FromName(myColor[0]), Color.FromName(myColor[0]));
- //圖例說明
- myChart.Legend = "折線一";
- //添加第一個點,參數一為x座標上的名稱,參數二為y座標上的值
- myChart.Data.Add(new ChartPoint("一", float.Parse("100")));
- //添加第二個點
- myChart.Data.Add(new ChartPoint("二", float.Parse("200")));
- //chart為控制項ID
- this.chart.Charts.Add(myChart);
- this.chart.RedrawChart();
- }
ASP.NET報表控制項二、柱狀圖
- //顏色數組
- private string[] myColor = new string[]
- {
- "Fuchsia",
- "Black",
- "Gold",
- "Blue",
- "HotPink",
- "Orange",
- "Peru",
- "DodgerBlue",
- "Lime",
- "Tan",
- "Red",
- "GreenYellow",
- "DarkGreen",
- "DimGray",
- "Orchid"
- };
-
- //調用該方法產生柱狀圖
- private void bindchart()
- {
- //擷取一個DataTable,具體函數略...
- DataTable dt = this.getdt();
- if (dt != null)
- {
- if (dt.Rows.Count > 0)
- {
- //遍曆DataTable為每條記錄產生一個柱狀
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- //建立對象
- ColumnChart mychart = new ColumnChart();
- //設定柱子寬度
- mychart.MaxColumnWidth = 48;
- //顏色
- mychart.Fill.Color = Color.FromName(this.myColor[i]);
- //在柱子上顯示數量
- mychart.DataLabels.Visible = true;
- //數量的字型
- mychart.DataLabels.Font = new Font("Verdana", 14);
- //添加
- mychart.Data.Add(new ChartPoint("", float.Parse(dt.Rows[i]["num"].ToString())));
- //備忘
- mychart.Legend = dt.Rows[i]["name"].ToString();
- this.chart.Charts.Add(mychart);
- }
- //輔助設定
- //背景色
- chart.Background.Color = Color.FromArgb(165, 0, 16);
- chart.YAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
- chart.XAxisFont.ForeColor = Color.FromArgb(165, 0, 16);
- //內部線條
- chart.Border.Color = Color.FromArgb(200, 200, 200);
- //邊框樣式
- chart.BorderStyle = BorderStyle.None;
- //y最大值
- double max = double.Parse(dt.Compute("MAX(num)","").ToString());
- //遞增值
- int intv = 2;
-
- //數量小於16的情況
- if (max < 16)
- {
- max = 16;
- }
- //大於16的情況
- else
- {
- intintv = int.Parse(Math.Ceiling(max/8).ToString());
- max += intv;
- }
-
- //設定Y軸終點值
- chart.YCustomEnd = int.Parse(max.ToString());
- //y遞增值
- chart.YValuesInterval = intv;
-
- //產生
- this.chart.RedrawChart();
- }
- }
- }
Web Chart為免費ASP.NET報表控制項,需要的朋友可去官方地址下載:http://www.carlosag.net/Tools/WebChart/Default.aspx,上面還有很多效果和程式碼範例。
已有 0 人發表留言,猛擊->>這裡<<-參與討論
ITeye推薦