一个chartControl 里包括以个diagram(图表)

diagram里可以设置 x-axis与y-axis ,另外还可以设置SecondaryXAxis与SecondaryYAxis,在Series属性里可以选择使用Secondary Axis

一个diagram里包括多少个Series,一个Series表示一组(x,y)取值集合

一个diagram里可以添加多个Panel, 二Series可以设置呈现在那个panel里

Series的主要属性是DataSource,指定 ArgumentDataMember(X-Axis),ValuesDataMembers(Y-Axis)

1.自定义标注显示内,首相要设置series.LablesVisibility=True

  1. chartControl1.CustomDrawSeriesPoint += (s, e) =>
  2. {
  3. if (e.Series == chartControl1.Series["Real"])
  4. {
  5. var it = e.SeriesPoint;
  6. var obj = it.Tag as QualifiedInfo; //Tag里是当前点的记录
  7. e.LabelText = string.Format("{0}|{2}|{1}", obj.Disqualification, obj.Amount,obj.DisqualificationWithoutOtherDuty);
  8. }
  9. };

参考代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Linq;
  8. using System.Windows.Forms;
  9. using DevExpress.XtraEditors;
  10. using WinDetectionClockAdmin.Model;
  11. using DevExpress.XtraCharts;
  12. using System.Threading;
  13. using DetectionClock.EFModel;
  14. namespace WinDetectionClockAdmin
  15. {
  16. public partial class frmPercentOfPassCharting : DevExpress.XtraEditors.XtraForm
  17. {
  18. private ChartControl CurCharControl { get; set; }
  19. public SynchronizationContext SyncContext { get; set; }
  20. public frmPercentOfPassCharting()
  21. {
  22. InitializeComponent();
  23. SyncContext = SynchronizationContext.Current;
  24.  
  25. #region Tab
  26. layoutControlGroup3.Shown += (s, e) =>
  27. {
  28. CurCharControl = chartControl1;
  29. };
  30. layoutControlGroup4.Shown += (s, e) => { CurCharControl = chartControl2; };
  31. layoutControlGroup5.Shown += (s, e) => { CurCharControl = chartControl3; };
  32. layoutControlGroup6.Shown += (s, e) => { CurCharControl = chartControl4; };
  33. #endregion
  34. #region 自自定义Lbl显示
  35. chartControl1.CustomDrawSeriesPoint += (s, e) =>
  36. {
  37. if (e.Series == chartControl1.Series["Real"])
  38. {
  39. var it = e.SeriesPoint;
  40. var obj = it.Tag as QualifiedInfo;
  41. e.LabelText = string.Format("{0}|{2}|{1}", obj.Disqualification, obj.Amount,obj.DisqualificationWithoutOtherDuty);
  42. }
  43. };
  44. #endregion
  45.  
  46. #region
  47. bDate.EditValue = DateTime.Now.Date.AddDays( - DateTime.Now.Day);
  48. eDate.EditValue = DateTime.Now.Date.Add(new TimeSpan(, , ));
  49. ThreadPool.QueueUserWorkItem(o =>
  50. {
  51. using (var ctx = DBCtx.GetCtx())
  52. {
  53. var sql = DRecAnalyze.LoadSql("sql04.txt");
  54. var mInfoList = ctx.ExecuteStoreQuery<MInfo>(sql).ToList();
  55. var batnos = ctx.FO_Task.GroupBy(ent => ent.Batno).Select(ent => ent.Key).Where(ent => ent != null).ToList();
  56.  
  57. var empList = ctx.FO_TaskEmps.ToList();
  58.  
  59. SyncContext.Post(s =>
  60. {
  61. team.Properties.DataSource = empList;
  62. mno.Properties.DataSource = mInfoList;
  63. batno.Properties.Items.AddRange(batnos.ToArray());
  64. }, null);
  65.  
  66. }
  67. }, null);
  68.  
  69. #endregion
  70. }
  71.  
  72. private void btnLoad_Click(object sender, EventArgs e)
  73. {
  74. try
  75. {
  76. var sql = DRecAnalyze.LoadSql("sql05.txt");
  77. if (bDate.EditValue == null) throw new Exception("请指定开始时间");
  78. if (eDate.EditValue == null) throw new Exception("请指定结束时间");
  79. var bTime=(DateTime)bDate.EditValue;
  80. var eTime=(DateTime)eDate.EditValue;
  81.  
  82. var dCondition = string.Format(" And d.AddTime>='{0}' And d.AddTime<='{1}' ",
  83. bTime.Date.ToString("yyyy-MM-dd 00:00:00"),
  84. eTime.Date.ToString("yyyy-MM-dd 23:59:59")
  85. );
  86.  
  87. var tCondition = "";
  88. if (mno.EditValue != null )
  89. {
  90. if (!string.IsNullOrWhiteSpace(mno.ToString()))
  91. {
  92. tCondition += string.Format(" And t.MNo='{0}'", mno.EditValue.ToString());
  93. }
  94. }
  95. if (!string.IsNullOrWhiteSpace(batno.Text))
  96. {
  97. tCondition += string.Format(" And t.BatNo='{0}'", batno.Text);
  98. }
  99. if (team.EditValue != null)
  100. {
  101. if(!string.IsNullOrWhiteSpace(team.EditValue.ToString()))
  102. {
  103. dCondition += String.Format(" And d.TaskEmpsId={0}", team.EditValue);
  104. }
  105. }
  106. var exeSql= sql.Replace("$DCondition", dCondition).Replace("$TCondition", tCondition);
  107.  
  108. #region AsyncAction
  109. Action act = () =>
  110. {
  111. var data = DRecAnalyze.LoadData(exeSql);
  112. var list = DRecAnalyze.AnalyzePercentOfPass(data);
  113.  
  114. //所有不良项
  115. var symptomList = DRecAnalyze.AnalyzeSymptom(data);
  116.  
  117. //生产部不良项
  118. var assembleSymptomList = DRecAnalyze.AnalyzeAssembleSymptom(data);
  119.  
  120. //主要不良项
  121. var mainSymptom = DRecAnalyze.AnalyzeMainSymptom(data);
  122.  
  123. SyncContext.Post(o =>
  124. {
  125. var diagram = chartControl1.Diagram as XYDiagram;
  126. if (list.Count > )
  127. {
  128. diagram.AxisY.Range.MaxValue = Math.Floor(list.Max(ent => ent.Disqualification) * 1.6);
  129. }
  130. chartControl1.Series["Aim"].DataSource = list;
  131. chartControl1.Series["Real"].DataSource = list;
  132. chartControl1.Series["Disqualification"].DataSource = list;
  133.  
  134. chartControl2.Series["Symptom"].DataSource = symptomList;
  135.  
  136. chartControl3.Series["Symptom"].DataSource = assembleSymptomList;
  137.  
  138. chartControl4.Series[].DataSource = mainSymptom;
  139. chartControl4.Series[].DataSource = mainSymptom;
  140. chartControl4.Series[].DataSource = mainSymptom;
  141. }, null);
  142. };
  143. #endregion
  144. this.AsyncInvoke(act);
  145. }
  146. catch (Exception ex)
  147. {
  148. MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  149. }
  150.  
  151. }
  152.  
  153. private void btnExport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  154. {
  155. SaveFileDialog fileDialog = new SaveFileDialog();
  156. fileDialog.Filter = "Excel文件|*.xls";
  157. fileDialog.FileName = this.Text + DateTime.Now.ToString("yyMMddHHmm");
  158. if (fileDialog.ShowDialog() == DialogResult.OK)
  159. {
  160. CurCharControl.ExportToXls(fileDialog.FileName);
  161. XtraMessageBox.Show("操作成功!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  162. }
  163. }
  164. }
  165. }

dev ChartControl 备忘的更多相关文章

  1. Npm vs Yarn 之备忘大全

    有则笑话,如此讲到:"老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成.我嘴一抽,来了句:人和动物最大的区别就是人会使用 ...

  2. centos 6.4 mysql rpm 离线安装【备忘】

    离线状态下使用rpm的安装包进行mysql的安装,仅作备忘 准备工作: 官网下载mysql离线rpm安装包(这里就不演示了,拿现成的做演示) =================更新线 2018-01- ...

  3. ubuntu下串口编程备忘

    弄了一下串口,一个小问题多折腾了下,备忘.软件环境:zl@zhanglong:~$ cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=12.0 ...

  4. CentOS6.4 X86_64 kvm+PXE备忘

    Install 安装 1 2 3 4 5 # yum install qemu-kvm qemu-img # 使用kvm至少要安装的包,一个提供用户级别kvm模拟器,一个提供磁盘镜像的管理 # 安装虚 ...

  5. Proxmox 安装 dsm 黑群 备忘

    备忘:Proxmox 虚拟机使用 E1000网卡(用Virlo找不到引导),直通数据硬盘 .     使用的引导文件是 DS918+_6.21-23824-1.04b.img 虚拟机启动使用第三项EX ...

  6. GIS部分理论知识备忘随笔

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...

  7. python序列,字典备忘

    初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...

  8. Vi命令备忘

    备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...

  9. ExtJs4常用配置方法备忘

    viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...

随机推荐

  1. c++builder XE7 C++11 C++0x 新语法

    Non-static data member initializers 非静态成员变量初始化变得简单,这个XE7 64位编译成功,32位还是不支持 As a simple example, struc ...

  2. air 桌面应用发布后可以删除的文件

    ****\Adobe AIR\Versions\1.0 下的文件夹Resources,可以整个删除 ***META-INF\AIR目录下的application.xml配置文件可修改initialWi ...

  3. AS3中String转换成Boolean

    AS3中, 对布尔值的转换, 规定所有的非空字符串都是true. 下面都不行: var f:Boolean = new Boolean(str); var f:Boolean = str as Boo ...

  4. Simple2D-20(重构)

    为什么重构 Simple2D 开始的时候打算使用几周的时间来实现 Simple2D 的,主要是实现一些简单的 2D 渲染功能.但是编写的过程中不满于它只能实现简单的功能,后来添加了诸如Alpha测试. ...

  5. insert NULL into mysql

    https://stackoverflow.com/questions/36898130/python-how-to-insert-null-mysql-values You are insertin ...

  6. Hadoop 集群的一些问题

    1.创建用户hadoop adduser hadoop passwd hadoop usermod -a -G hadoop hadoop chown -R hadoop:hadoop  /data ...

  7. Go语言中cannot convert adminname (type interface {}) to type *: need type assertion的解决办法

    解决的办法是把string(adminname)替换为adminname.(string).其它类型也是类似.

  8. docker在centos和Ubuntu的安装

    CentOS: http://blog.csdn.net/wuapeng/article/details/51728614 rpm -Uvh http://www.elrepo.org/elrepo- ...

  9. Message: u'$ is not defined' ; Stacktrace

    status.html <html> <head> <meta http-equiv="content-type" content="tex ...

  10. jquery datatables api

    原文地址 学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/ ...