注冊(cè)|登錄

聯(lián)系電話:024-31891684  13390130939
沈陽軟件公司--沈陽軟件定制

沈陽軟件開發(fā)_沈陽軟件公司_沈陽軟件定制/軟件/最新技術(shù)

Latest technology最新技術(shù)

建立RadControls圖表方法

瀏覽量:4301

#region 圖表方法

/// <summary>
/// 創(chuàng)建圖表數(shù)據(jù)集
/// </summary>
public static DataSet CreateChartDataSet()
{
DataSet dsChart = new DataSet();
// 添加基本表
DataTable dtChartBase = new DataTable("ChartBase");
dtChartBase.Columns.Add("Title", typeof(string));
dtChartBase.Columns.Add("Show3D", typeof(bool)).DefaultValue = false;
dtChartBase.Columns.Add("ShowLegend", typeof(bool)).DefaultValue = false;
dtChartBase.Columns.Add("ChartType", typeof(string));
dtChartBase.Columns.Add("Width", typeof(string));
dtChartBase.Columns.Add("Height", typeof(string));
dsChart.Tables.Add(dtChartBase);
// 添加軸表
DataTable dtChartAxis = new DataTable("ChartAxis");
dtChartAxis.Columns.Add("XTitle", typeof(string));
dtChartAxis.Columns.Add("YTitle", typeof(string));
dtChartAxis.Columns.Add("XStartFromZero", typeof(bool)).DefaultValue = false;
dtChartAxis.Columns.Add("YStartFromZero", typeof(bool)).DefaultValue = false;
dtChartAxis.Columns.Add("XValueType", typeof(ChartValueTypes)).DefaultValue = ChartValueTypes.Double;
dtChartAxis.Columns.Add("YValueType", typeof(ChartValueTypes)).DefaultValue = ChartValueTypes.Double;
dtChartAxis.Columns.Add("XFormat", typeof(string)).DefaultValue = "N2";
dtChartAxis.Columns.Add("YFormat", typeof(string)).DefaultValue = "N2";
dtChartAxis.Columns.Add("XAngle", typeof(int)).DefaultValue = 30;
dtChartAxis.Columns.Add("YAngle", typeof(int)).DefaultValue = 30;
dsChart.Tables.Add(dtChartAxis);
// 添加數(shù)據(jù)表
DataTable dtSeriesData = new DataTable("SeriesData");
dtSeriesData.Columns.Add("Series", typeof(string));
dtSeriesData.Columns.Add("XValue", typeof(string));
dtSeriesData.Columns.Add("YValue", typeof(string));
dsChart.Tables.Add(dtSeriesData);

// 添加明細(xì)表
DataTable dtSeriesDetail = new DataTable("SeriesDetail");
dtSeriesDetail.Columns.Add("Series", typeof(string));
dtSeriesDetail.Columns.Add("ChartType", typeof(string));
dtSeriesDetail.Columns.Add("ShowLabelAsValue", typeof(bool)).DefaultValue = false;
dsChart.Tables.Add(dtSeriesDetail);

dsChart.RemotingFormat = System.Data.SerializationFormat.Binary;
return dsChart;
}
/// <summary>
/// 顯示圖表
/// </summary>
/// <param name="chart">圖表</param>
/// <param name="ds">數(shù)據(jù)集</param>
public static void ShowChart(Dundas.Charting.WebControl.Chart chart, DataSet ds)
{
if (ds == null)
{
chart.ImageUrl = string.Empty;
return;
}

DataTable dtChartBase = ds.Tables["ChartBase"];
DataTable dtChartAxis = ds.Tables["ChartAxis"];
DataTable dtSeriesData = ds.Tables["SeriesData"];
DataTable dtSeriesDetail = ds.Tables["SeriesDetail"];
Font fontTitle = new Font("Trebuchet MS", 10.5f, FontStyle.Bold, GraphicsUnit.Pixel);
Font fontLegend = new Font("Trebuchet MS", 10.5f, FontStyle.Regular, GraphicsUnit.Pixel);

// 添加圖表標(biāo)題
chart.Titles.Clear();
Dundas.Charting.WebControl.Title title = new Title("Title1");
title.Text = dtChartBase.Rows[0]["Title"].ToString();
title.Font = fontTitle;
chart.Titles.Add(title);
// 是否顯示三維圖表
bool bShow3D = Convert.ToBoolean(dtChartBase.Rows[0]["Show3D"]);
// 設(shè)置三維風(fēng)格
chart.ChartAreas["Default"].Area3DStyle.Enable3D = bShow3D;
// 是否顯示圖例
bool bShowLegend = Convert.ToBoolean(dtChartBase.Rows[0]["ShowLegend"]);
if (bShowLegend)
{
chart.Legends.Clear();
Dundas.Charting.WebControl.Legend legend = new Legend("Default");
legend.AutoFitText = false;
legend.BackColor = System.Drawing.Color.Transparent;
legend.Enabled = true;
legend.Font = fontLegend;
chart.Legends.Add(legend);
}
else
{
chart.Legends.Clear();
}
string strDefaultChartType = dtChartBase.Rows[0]["ChartType"].ToString();
if (dtChartBase.Rows[0]["Width"] != DBNull.Value)
{
chart.Width = new Unit(dtChartBase.Rows[0]["Width"].ToString());
}
if (dtChartBase.Rows[0]["Height"] != DBNull.Value)
{
chart.Height = new Unit(dtChartBase.Rows[0]["Height"].ToString());
}
// 添加橫軸、縱軸標(biāo)題
chart.ChartAreas["Default"].AxisX.Title = dtChartAxis.Rows[0]["XTitle"].ToString();
chart.ChartAreas["Default"].AxisY.Title = dtChartAxis.Rows[0]["YTitle"].ToString();
chart.ChartAreas["Default"].AxisX.TitleFont = fontTitle;
chart.ChartAreas["Default"].AxisY.TitleFont = fontTitle;
// 設(shè)置橫軸、縱軸是否從0開始
chart.ChartAreas["Default"].AxisX.StartFromZero = Convert.ToBoolean(dtChartAxis.Rows[0]["XStartFromZero"]);
chart.ChartAreas["Default"].AxisY.StartFromZero = Convert.ToBoolean(dtChartAxis.Rows[0]["YStartFromZero"]);
// 獲取橫軸、縱軸數(shù)據(jù)類型
ChartValueTypes xValueType = (ChartValueTypes)Convert.ToInt32(dtChartAxis.Rows[0]["XValueType"]);
ChartValueTypes yValueType = (ChartValueTypes)Convert.ToInt32(dtChartAxis.Rows[0]["YValueType"]);
string xFormat = dtChartAxis.Rows[0]["XFormat"].ToString();
string yFormat = dtChartAxis.Rows[0]["YFormat"].ToString();
chart.ChartAreas["Default"].Area3DStyle.XAngle = Convert.ToInt32(dtChartAxis.Rows[0]["XAngle"]);
chart.ChartAreas["Default"].Area3DStyle.YAngle = Convert.ToInt32(dtChartAxis.Rows[0]["YAngle"]);

// DISTINCT字段數(shù)組
string[] myColumnNames = { "Series" };
// 準(zhǔn)備填充的序列
DataTable dtSeriesList = dtSeriesData.DefaultView.ToTable(true, myColumnNames);
// 填充數(shù)據(jù)
chart.Series.Clear();
foreach (DataRow dr1 in dtSeriesList.Rows)
{
string strSeries = dr1["Series"].ToString();
Series series = new Series(strSeries);
// 組織序列數(shù)據(jù)
DataTable dtSeries = dtSeriesData.Clone();
dtSeries.Columns.Remove("Series");
foreach (DataRow dr2 in dtSeriesData.Select("Series='" + strSeries + "'"))
{
dtSeries.ImportRow(dr2);
}

// 設(shè)置序列類型
DataRow[] drRows = dtSeriesDetail.Select("Series='" + strSeries + "'");
if (drRows.Length > 0)
{
string strChartType = drRows[0]["ChartType"].ToString();
if (!string.IsNullOrEmpty(strChartType))
{
series.Type = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), strChartType, true);
}
else if (!string.IsNullOrEmpty(strDefaultChartType))
{
series.Type = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), strDefaultChartType, true);
}
// 設(shè)置序列標(biāo)簽
series.ShowLabelAsValue = Convert.ToBoolean(drRows[0]["ShowLabelAsValue"]);
}
else if (!string.IsNullOrEmpty(strDefaultChartType))
{
series.Type = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), strDefaultChartType, true);
}

switch (series.Type)
{
case SeriesChartType.Area://面積圖
break;
case SeriesChartType.Bar://條形圖
break;
case SeriesChartType.BoxPlot://盒形圖
break;
case SeriesChartType.Bubble://泡泡圖
break;
case SeriesChartType.CandleStick:
break;
case SeriesChartType.Column://柱狀圖
series["DrawingStyle"] = "Default";
series["PointWidth"] = "1.0";
break;
case SeriesChartType.Doughnut://圓環(huán)圖
series["PieLabelStyle"] = "Inside";
series["PieDrawingStyle"] = "SoftEdge";
series["DoughnutRadius"] = "60";
break;
case SeriesChartType.ErrorBar:
break;
case SeriesChartType.FastLine:
break;
case SeriesChartType.FastPoint:
break;
case SeriesChartType.Funnel:
break;
case SeriesChartType.Gantt:
break;
case SeriesChartType.Kagi:
break;
case SeriesChartType.Line://折線圖
break;
case SeriesChartType.Pie://餅形圖
series["PieLabelStyle"] = "Inside";
series["PieDrawingStyle"] = "SoftEdge";
break;
case SeriesChartType.Point://散點(diǎn)圖
break;
case SeriesChartType.PointAndFigure:
break;
case SeriesChartType.Polar:
break;
case SeriesChartType.Pyramid:
break;
case SeriesChartType.Radar://雷達(dá)圖
break;
case SeriesChartType.Range:
break;
case SeriesChartType.RangeColumn:
break;
case SeriesChartType.Renko:
break;
case SeriesChartType.Rose:
break;
case SeriesChartType.Spline://曲線圖
break;
case SeriesChartType.SplineArea:
break;
case SeriesChartType.SplineRange:
break;
case SeriesChartType.StackedArea:
break;
case SeriesChartType.StackedArea100:
break;
case SeriesChartType.StackedBar:
break;
case SeriesChartType.StackedBar100:
break;
case SeriesChartType.StackedColumn:
break;
case SeriesChartType.StackedColumn100:
break;
case SeriesChartType.StackedRose:
break;
case SeriesChartType.StepLine:
break;
case SeriesChartType.Stock:
break;
case SeriesChartType.ThreeLineBreak:
break;
default:
break;
}
series.Points.DataBind(dtSeries.DefaultView, "XValue", "YValue", string.Empty);
series.XValueType = xValueType;
series.YValueType = yValueType;
chart.ChartAreas["Default"].AxisX.LabelStyle.Format = xFormat;
chart.ChartAreas["Default"].AxisX.LabelStyle.Format = yFormat;
if (yValueType == ChartValueTypes.Double || yValueType == ChartValueTypes.Single)
{
if (yFormat.Length >= 2)
{
series.LabelFormat = "{0:F" + yFormat.Substring(1, yFormat.Length - 1) + "}";
}
}
// 設(shè)置三維風(fēng)格
if (bShow3D)
{
series.BorderWidth = 1;
chart.ChartAreas["Default"].Area3DStyle.RightAngleAxes = true;
chart.ChartAreas["Default"].Area3DStyle.Clustered = true;
}
else
{
series.BorderWidth = 3;
}
// 添加序列
chart.Series.Add(series);
}
}
/// <summary>
/// 另存為 Excel
/// </summary>
/// <param name="title">標(biāo)題</param>
/// <param name="dt">數(shù)據(jù)表</param>
/// <param name="imageDir">圖片絕對(duì)路徑</param>
/// <param name="imageWidth">圖片寬度</param>
/// <param name="imageHeight">圖片高度</param>
public static void SaveAsExcel(string title, DataTable dt, string imageDir, int imageWidth, int imageHeight)
{
string down = Path.GetDirectoryName(imageDir) + @"\" + title + ".xls";
string dir = Path.GetDirectoryName(down);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
ExportToExcel dte = new ExportToExcel(down);

dte.DataTableToExcelSheet(dt, "A1");
int count = dt.Rows.Count + 2;
dte.InsertPicture("A" + count, imageDir, imageWidth, imageHeight);
dte.SaveFile();
dte.DownloadFile();
}
/// <summary>
/// 獲取導(dǎo)出路徑
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string AppSettingItemValue(string name)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
KeyValueConfigurationElement item = config.AppSettings.Settings[name];
return item.Value;
}
 

沈陽團(tuán)購網(wǎng)|營(yíng)口網(wǎng)站制作|沈陽軟件公司|軟件定制|網(wǎng)站建設(shè)|加盟易勢(shì)|提交問題

主站蜘蛛池模板: 成年女人18级毛片毛片免费观看| 亚洲av无码成人精品区狼人影院| 亚洲国产视频一区| 久久久久亚洲AV无码去区首| 久久青青草原亚洲av无码麻豆| 亚洲VA中文字幕| 丰满少妇人妻久久久久久| 99re热在线观看| 青青青青青国产免费手机看视频| 精品久久久久久久久午夜福利 | 高清亚洲综合色成在线播放放| 美女动作一级毛片| 欧美亚洲国产精品久久| 成a人片亚洲日本久久| 国产精品一区二区四区| 又粗又大又黄又硬又爽毛片| 亚洲人成在线播放网站岛国| 一个人看的www免费高清| 99自拍视频在线观看| 狠狠精品干练久久久无码中文字幕| 日韩中文字幕a| 国产裸体美女永久免费无遮挡| 国产一区二区三区内射高清| 亚洲国产精品成人久久| 三上悠亚一区二区观看| 国产高跟踩踏vk| 欧美美女与野兽免费看电影| 新97人人模人人爽人人喊| 国产福利影院在线观看| 亚洲黄色网址在线观看| 久久一本一区二区三区| jjizz全部免费看片| 狠狠噜天天噜日日噜视频麻豆| 日本乱偷人妻中文字幕在线| 国产精品无码久久综合网| 人妻无码一区二区视频| 中文字幕日韩一区二区不卡| 日本高清xxxxx| 欧美精品www| 天天看片日日夜夜| 啊灬啊别停灬用力啊岳|