//中心业务平台的“热门岗位信息监测”柱状图

public partial class HotJobInfo : UserControl
    {
        private object _objLock = new object();

private delegate void getDataHandler();

/// <summary>
        /// 热门岗位数据
        /// </summary>
        private BarGraghData _barGraghData = null;

public HotJobInfo()
        {
            InitializeComponent();
            //获取热门岗位数据
            //异步获取数据,绘制图表
            getDataHandler handler = new getDataHandler(GetHotJobDataInfo);
            IAsyncResult result = handler.BeginInvoke(new AsyncCallback(showLine), "AsycState:OK");
        }

private void showLine(IAsyncResult result)
        {
            try
            {
                this.Invoke(
                            new Action(
                            delegate
                            {
                                //绘制图表
                                ToLineGragh();
                            }));
            }
            catch { }
        }

/// <summary>
        /// 获取热门岗位信息数据
        /// </summary>
        private void GetHotJobDataInfo()
        {
            try
            {
                lock (_objLock)
                {
                    //向服务器请求数据
                    Random ran = new Random();
                    int sjd = ran.Next(1, 1000);
                    string addr = ConfigurationManager.AppSettings["ServiceAddr"].ToString();
                    //去掉地址结尾的'/',否则请求中会出现两个'/',而导致请求失败
                    string url =
string.Format(@"{0}/JobInfoCheck/GetHotJob", addr[addr.Length - 1] !=
'/' ? addr : addr.Substring(0, addr.Length - 1));
                    string response = Utility.HttpResult.GetHttpRequest(url, sjd.ToString());
                    BarGraghDataJson result = Utility.JsonHelper.JsonDeserialize<BarGraghDataJson>(response);
                    if (result.IsOK)
                    {
                        BarGraghData data = result.Result;
                        _barGraghData = data;
                    }
                }
              
            }
            catch {}
        }

/// <summary>
        /// 把接收到的数据转换额外柱状图表所需要的数据, 绘制图表
        /// </summary>
        private void ToLineGragh()
        {
            ChartControl chartControl = new ChartControl();
            if (_barGraghData != null)
            {
                DataTable table = new DataTable();
                //横坐标显示值
                table.Columns.Add("hName", typeof(string));
                //纵坐标显示值
                table.Columns.Add("value", typeof(int));
                for (int i = 0; i < _barGraghData.GWFLMC.Length; i++)
                {
                    DataRow row = table.NewRow();
                    row["hName"] = _barGraghData.GWFLMC[i];
                    row["value"] = _barGraghData.GWSL[i];
                    table.Rows.Add(row);
                }
                //动态生成一个柱状图表,调用下面的静态方法
                chartControl = ToBarGraph.GetChartControl("", 0, table, "hName", "hName", "value");
            }
            //纵坐标标题
            chartControl.Dock = DockStyle.Fill;
            this.panel1.Controls.Add(chartControl);
            //X轴刻度间隔设置
            XYDiagram xydiagram = (XYDiagram)chartControl.Diagram;
            xydiagram.AxisX.MinorCount = 1;
            //小刻度是否显示
            xydiagram.AxisX.Tickmarks.Visible = false;
            xydiagram.AxisX.Range.MinValueInternal = -0.5D;
        }
    }

/// <summary>
    /// 热门岗位信息监测菜单
    /// </summary>
    public class HotjobMenu : BtnMenuBase
    {
        public override UserControl GetEditControl()
        {
            return new HotJobInfo();
        }
    }

/// <summary>
    /// 生成柱状图类
    /// </summary>
    public static class ToBarGraph
    {
        /// 获取图表
        /// </summary>
        /// <param name="titleName">图表名称</param>
        /// <param name="viewType">图表类型</param>
        /// <param name="dataSourse">数据源</param>
        /// <param name="textField1">显示文字字段</param>
        /// <param name="textField2">横坐标显示的文字字段</param>
        /// <param name="valueField">显示数值字段</param>
        /// <returns></returns>
        public static ChartControl GetChartControl(string titleName,
ViewType viewType, DataTable dataSourse, string textField1, string
textField2, string valueField)
        {
            ChartControl _ChartControl = new ChartControl();
            if (dataSourse == null || textField1 == "" || textField2 == "" || valueField == "")
            {
                return _ChartControl;
            }
            List<string> listTitle = new List<string>();
            foreach (DataRow item in dataSourse.Rows)
            {
                string title = item[textField1].ToString();
                if (listTitle.Contains(title))
                {
                    continue;
                }
                else
                {
                    listTitle.Add(title);
                    DataView dv = dataSourse.AsDataView();
                    dv.RowFilter = string.Format(" {0}='{1}' ", textField1, title);
                    DataTable dt = dv.ToTable();
                    // 柱状图里的第一个柱
                    Series Series1 = new Series(title, viewType);

Series1.ArgumentScaleType = ScaleType.Qualitative;
                    Series1.PointOptions.PointView = PointView.ArgumentAndValues;//显示表示的信息和数据
                    Series1.PointOptions.ValueNumericOptions.Precision = 0;
                    Series1.DataSource = dt;
                    //柱状图柱子的宽度设置
                    BarSeriesView bsv = (BarSeriesView)Series1.View;
                    bsv.BarWidth = 7;

// 以哪个字段进行显示
                    Series1.ArgumentDataMember = textField2;
                    Series1.ValueScaleType = ScaleType.Numerical;

// 柱状图里的柱的取值字段
                    Series1.ValueDataMembers.AddRange(new string[] { valueField });
                    Series1.LegendText = title;
                    _ChartControl.Series.Add(Series1);
                }
            }
            return _ChartControl;
        }

}

DevExpress ChartControl 柱状图的使用【转】的更多相关文章

  1. Devexpress ChartControl 柱状图简单例子

    //using DevExpress.XtraEditors; //using DevExpress.XtraCharts; // Create an empty chart. ChartContro ...

  2. DevExpress ChartControl大数据加载时有哪些性能优化方法

    DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...

  3. [DevExpress]ChartControl之柱状图示例

    关键代码: using System; using System.Data; using System.Windows.Forms; using CSharpUtilHelpV2; using Dev ...

  4. DevExpress中ChartControl柱状图(Bar)用法

    我的数据 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 chartControl1.Series.Clear(); ...

  5. WPF DevExpress ChartControl使用之XYDiagram

    WPF使用Dev和WinForm有许多不同,相对而言,WPF要更简单和炫酷一点,我只做了一点基本的功能,没有仔细的研究,这里只介绍一下WPF Dev ChartControl绘制XYDiagram的基 ...

  6. [DevExpress]ChartControl之时间轴示例

    关键代码: using System; using System.Data; using System.Windows.Forms; using DevExpress.XtraCharts; name ...

  7. [DevExpress]ChartControl之SeriesTemplate示例

    关键代码: using System; using System.Data; using System.Windows.Forms; using CSharpUtilHelpV2; using Dev ...

  8. 初识Devexpress ChartControl 之 动态添加stepline及TextAnnotation

    最近在用devexpress 第三方软件做项目. devexpress 的控件使用简单.功能强大.类型丰富.界面优美.扩展性强.今天主要是动态生成了一条StepLine.生成后的效果(能力不强,所以做 ...

  9. DevExpress ChartControl 设置它的标题

    private void SetHZTitle(ref ChartControl chartControl, string HTitle) { chartControl.Titles.Clear(); ...

随机推荐

  1. poj 3071 概率dp

    转自:cxlove 题目:有2^n个队,相邻的两两打淘汰赛,,求最后哪个队夺冠的概率最大 dp[i][j]表示第i轮的时候,第j去支队伍赢的概率. 那么dp[i][j]的前提就是i-1轮的时候,j是赢 ...

  2. FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索

    R-Tree 主要用于三维空间的搜索, 据说这种搜索算法非常之快, 哪怕百万条记录也是眨眼间的事! SQLite 支持 1-5 维, FireDAC 也提供了 TFDSQLiteRTree 控件以方便 ...

  3. px 与 dp, sp换算公式?(转)

    PPI = Pixels per inch,每英寸上的像素数,即 "像素密度" xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 (baseline) ldpi: 0. ...

  4. HDU 4818 Golden Radio Base (2013长春现场赛B题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4814 进制转换. 现场根据题目给的两个公式,不断更新!!! 胡搞就可以了. 现场3A,我艹,一次循环开 ...

  5. GIS中的数据库.gdb与.mdb的区别

    gdb是文件地理数据库,mdb是个人地理数据库,都是数据库文件类型. 个人地理数据库,是以access数据库为基础的个人将数据库格式mdb,可以存储不超过2G的文件,只适合Windows系统下: 文件 ...

  6. 微信破解,解密?How To Decrypt WeChat EnMicroMsg.db Database?

    20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送) 国内私募机构九鼎控股打造,九鼎投资是在全国股 ...

  7. C#编程(六十九)----------DLR简介

    DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...

  8. C#编程(二十四)----------修饰符

    修饰符 修饰符即应用于类型或成员的关键字.修饰符可以指定方法的可见性,如public或private,还可以指定一项的本质,如刚发的vritual或abstract. 可见性的修饰符 修饰符 应用于 ...

  9. 查询 EBS 系统物料净重、毛重

    /* Formatted on 2018/3/14 23:40:47 (QP5 v5.256.13226.35538) */ SELECT DISTINCT MSI.SEGMENT1 || ',' 物 ...

  10. uva 10406 Cutting tabletops

    Problem D: Cutting tabletops Bever Lumber hires beavers to cut wood. The company has recently receiv ...