DevExpress ChartControl 柱状图的使用【转】
//中心业务平台的“热门岗位信息监测”柱状图
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 柱状图的使用【转】的更多相关文章
- Devexpress ChartControl 柱状图简单例子
//using DevExpress.XtraEditors; //using DevExpress.XtraCharts; // Create an empty chart. ChartContro ...
- DevExpress ChartControl大数据加载时有哪些性能优化方法
DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...
- [DevExpress]ChartControl之柱状图示例
关键代码: using System; using System.Data; using System.Windows.Forms; using CSharpUtilHelpV2; using Dev ...
- 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(); ...
- WPF DevExpress ChartControl使用之XYDiagram
WPF使用Dev和WinForm有许多不同,相对而言,WPF要更简单和炫酷一点,我只做了一点基本的功能,没有仔细的研究,这里只介绍一下WPF Dev ChartControl绘制XYDiagram的基 ...
- [DevExpress]ChartControl之时间轴示例
关键代码: using System; using System.Data; using System.Windows.Forms; using DevExpress.XtraCharts; name ...
- [DevExpress]ChartControl之SeriesTemplate示例
关键代码: using System; using System.Data; using System.Windows.Forms; using CSharpUtilHelpV2; using Dev ...
- 初识Devexpress ChartControl 之 动态添加stepline及TextAnnotation
最近在用devexpress 第三方软件做项目. devexpress 的控件使用简单.功能强大.类型丰富.界面优美.扩展性强.今天主要是动态生成了一条StepLine.生成后的效果(能力不强,所以做 ...
- DevExpress ChartControl 设置它的标题
private void SetHZTitle(ref ChartControl chartControl, string HTitle) { chartControl.Titles.Clear(); ...
随机推荐
- UI自动化测试(五)TestNG简介与安装步骤
简述 TestNG是一个设计用来简化广泛的测试需求的测试框架, 从单元测试(隔离测试一个类) 到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统, 例如运用服务器) . testNG灵感来 ...
- Kali Linux 2017.3发布了
Kali Linux 2017.3发布了 Kali Linux官方在11月21日发布Kali Linux 2017的第三个版本2017.3.这次发布变化相对不大,主要是设置面板风格发生改变,增加少量 ...
- PC端meta标签
下面介绍meta标签的几个属性,charset,content,http-equiv,name. 一.charset 此特性声明当前文档所使用的字符编码,但该声明可以被任何一个元素的lang特性的值覆 ...
- JavaScript实现链式调用
学习Jquery的时候,我们通常会看到链式调用的写法 $(window).addEvent('load', function(){ $('test').show().setStyle('color', ...
- mysql索引原理剖析
一.索引的原理 所谓索引,即是快速定位与查找,那么索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数(B+树相比B树,其非叶子节点占用更小的空间,可以有更多非叶子节点存放在再内存中,减少大量的IO ...
- 内存缓存 ehcache
内存缓存需要对内存缓存每个参数的配置意义搞明白,才能很好地去使用,例如失效时间.存活时间. 是否存储在磁盘.是否永久有效,参数要了解清楚后进行使用,不要在不清楚时盲目使用,会导致意想不到 的问题发生. ...
- ScrollView中嵌套GridView,Listview的办法
按照android的标准,ScrollView中是不能嵌套具有滑动特性的View的,但是有时如果设计真的有这样做的需要,或者为了更方便简单的实现外观(比如在外在的大布局需要有滑动的特性,并且内部有类似 ...
- Codeforces Round #258 (Div. 2) C. Predict Outcome of the Game 水题
C. Predict Outcome of the Game 题目连接: http://codeforces.com/contest/451/problem/C Description There a ...
- Ural 2036. Intersect Until You're Sick of It 计算几何
2036. Intersect Until You're Sick of It 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=2036 ...
- Both - Either - Neither English Grammar
http://www.grammar.cl/english/both-either-neither.htm Both, Either, Neither Summary Chart We use bot ...