实例介绍
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraCharts;
using DevExpress.XtraEditors;
namespace ChartControlTest
{
public partial class CrimeForm : DevExpress.XtraEditors.XtraForm
{
GetNewData getNewData = new GetNewData();
private int seletedIndex = 0;
public CrimeForm()
{
InitializeComponent();
BindDataByPrivince();
}
private void BindDataByPrivince()
{
var dt = GetCrimEventByProvince();
chartControl1.Series.Clear();
var series1 = CreateNewSeries("各省近年来暴力事件汇总", ViewType.Bar, dt, "StrikeWhere", "EventCount");
chartControl1.Series.Add(series1);
chartControl2.Series.Clear();
var series2 = CreateNewSeries("各省近年来暴力事件汇总", ViewType.Pie3D, dt, "StrikeWhere", "EventCount");
chartControl2.Series.Add(series2);
chartControl3.Series.Clear();
var series3 = CreateNewSeries("各省近年来暴力事件汇总", ViewType.Line, dt, "StrikeWhere", "EventCount");
chartControl3.Series.Add(series3);
//// 柱状图里的第一个柱
//var series1 = new Series("各省近年来暴力事件汇总", ViewType.Bar)
// {
// DataSource = GetCrimEventByProvince(),
// ArgumentScaleType = ScaleType.Qualitative,
// ArgumentDataMember = "StrikeWhere",
// ValueScaleType = ScaleType.Numerical,
// ShowInLegend = true,
// Label = { Visible = true }
// };
//series1.ValueDataMembers.AddRange(new string[] { "EventCount" });
//chartControl1.Series.Add(series1);
//chartControl2.Series.Clear();
//var series2 = new Series("各省近年来暴力事件汇总", ViewType.Pie3D)
// {
// DataSource = GetCrimEventByProvince(),
// ArgumentScaleType = ScaleType.Qualitative,
// ArgumentDataMember = "StrikeWhere",
// ValueScaleType = ScaleType.Numerical,
// ShowInLegend = true,
// Label = { Visible = true },
// LegendPointOptions = { PointView = PointView.ArgumentAndValues }
// };
//series2.LegendPointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
//series2.ValueDataMembers.AddRange(new string[] { "EventCount" });
//chartControl2.Series.Add(series2);
//chartControl3.Series.Clear();
//var series3 = new Series("各省近年来暴力事件汇总", ViewType.Line)
//{
// DataSource = GetCrimEventByProvince(),
// ArgumentScaleType = ScaleType.Qualitative,
// ArgumentDataMember = "StrikeWhere",
// ValueScaleType = ScaleType.Numerical,
// ShowInLegend = true,
// Label = { Visible = true }
//};
//series3.ValueDataMembers.AddRange(new string[] { "EventCount" });
//chartControl3.Series.Add(series3);
}
private Series CreateNewSeries(string title, ViewType type, DataTable dt, string argumentDataMemberName, string valueDataMemberName)
{
var series = new Series(title, type)
{
DataSource = dt,
ArgumentScaleType = ScaleType.Qualitative,
ArgumentDataMember = argumentDataMemberName,
ValueScaleType = ScaleType.Numerical,
ShowInLegend = true,
Label = { Visible = true }
};
if (type == ViewType.Pie3D)
{
series.LegendPointOptions.PointView = PointView.ArgumentAndValues;
series.LegendPointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
}
series.ValueDataMembers.AddRange(new string[] { valueDataMemberName });
return series;
}
private void BindDataByMonth()
{
var dt = GetCrimEventByMouth();
chartControl1.Series.Clear();
var series1 = CreateNewSeries("近年来各月暴力事件汇总", ViewType.Bar, dt, "Month", "EventCount");
chartControl1.Series.Add(series1);
chartControl2.Series.Clear();
var series2 = CreateNewSeries("近年来各月暴力事件汇总", ViewType.Pie3D, dt, "Month", "EventCount");
chartControl2.Series.Add(series2);
chartControl3.Series.Clear();
var series3 = CreateNewSeries("近年来各月暴力事件汇总", ViewType.Line, dt, "Month", "EventCount");
chartControl3.Series.Add(series3);
}
//按照所在地区分组统计
private DataTable GetCrimEventByProvince()
{
var ds = getNewData.GetDataSourceOfCrime();
var dt = ds.Tables[0];
var query = from t in dt.AsEnumerable()
group t by new { t1 = t.Field<string>("StrikeWhere") } into m
select new
{
StrikeWhere = m.Key.t1,
Count = m.Count()
//StaffNum = m.Sum(n => n.Field<int>("StaffNum"))
};
var newDt = getNewData.CreateShowDataTableByPrivince();
if (query.ToList().Count > 0)
{
for (int i = 0; i < query.Count(); i )
{
var row = newDt.NewRow();
row["StrikeWhere"] = query.ToList()[i].StrikeWhere;
row["EventCount"] = query.ToList()[i].Count;
newDt.Rows.Add(row);
}
}
return newDt;
}
//按照月份分组
private DataTable GetCrimEventByMouth()
{
var ds = getNewData.GetDataSourceOfCrime();
var dt = ds.Tables[0];
var dtNew = dt.Copy();
var column = new DataColumn
{
DataType = System.Type.GetType("System.Int32"),
ColumnName = "Month",
AutoIncrement = false,
Caption = "所属月份",
ReadOnly = false,
Unique = false
};
dtNew.Columns.Add(column);
for (int i = 0; i < dtNew.Rows.Count; i )
{
dtNew.Rows[i]["Month"] = DateTime.Parse(dtNew.Rows[i]["StrikeWhen"].ToString()).Month;
}
var query = from t in dtNew.AsEnumerable()
group t by new { t1 = t.Field<Int32>("Month") } into m
select new
{
Month = m.Key.t1,
Count = m.Count()
};
var newDt = getNewData.CreateShowDataTableByMonth();
if (query.ToList().Count > 0)
{
query = query.ToList().OrderBy(p => p.Month);
for (int i = 0; i < query.Count(); i )
{
var row = newDt.NewRow();
row["Month"] = string.Format("{0}月", query.ToList()[i].Month);
row["EventCount"] = query.ToList()[i].Count;
newDt.Rows.Add(row);
}
}
return newDt;
}
private void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e)
{
var nowSeltIndex = comboBoxEdit1.SelectedIndex;
if(nowSeltIndex==seletedIndex) return;
seletedIndex = nowSeltIndex;
if (seletedIndex == 0)
BindDataByPrivince();
else
BindDataByMonth();
}
}
}
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


支持(0) 盖楼(回复)
支持(0) 盖楼(回复)