基本信息
源码名称:Dev ChartControl图表展示控件用法展示
源码大小:17.78M
文件格式:.zip
开发语言:C#
更新时间:2017-12-02
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 2 元 
   源码介绍
【实例简介




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();
        }

    }
}