一个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

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

参考代码

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.XtraEditors;
using WinDetectionClockAdmin.Model;
using DevExpress.XtraCharts;
using System.Threading;
using DetectionClock.EFModel;
namespace WinDetectionClockAdmin
{
public partial class frmPercentOfPassCharting : DevExpress.XtraEditors.XtraForm
{
private ChartControl CurCharControl { get; set; }
public SynchronizationContext SyncContext { get; set; }
public frmPercentOfPassCharting()
{
InitializeComponent();
SyncContext = SynchronizationContext.Current; #region Tab
layoutControlGroup3.Shown += (s, e) =>
{
CurCharControl = chartControl1;
};
layoutControlGroup4.Shown += (s, e) => { CurCharControl = chartControl2; };
layoutControlGroup5.Shown += (s, e) => { CurCharControl = chartControl3; };
layoutControlGroup6.Shown += (s, e) => { CurCharControl = chartControl4; };
#endregion
#region 自自定义Lbl显示
chartControl1.CustomDrawSeriesPoint += (s, e) =>
{
if (e.Series == chartControl1.Series["Real"])
{
var it = e.SeriesPoint;
var obj = it.Tag as QualifiedInfo;
e.LabelText = string.Format("{0}|{2}|{1}", obj.Disqualification, obj.Amount,obj.DisqualificationWithoutOtherDuty);
}
};
#endregion #region
bDate.EditValue = DateTime.Now.Date.AddDays( - DateTime.Now.Day);
eDate.EditValue = DateTime.Now.Date.Add(new TimeSpan(, , ));
ThreadPool.QueueUserWorkItem(o =>
{
using (var ctx = DBCtx.GetCtx())
{
var sql = DRecAnalyze.LoadSql("sql04.txt");
var mInfoList = ctx.ExecuteStoreQuery<MInfo>(sql).ToList();
var batnos = ctx.FO_Task.GroupBy(ent => ent.Batno).Select(ent => ent.Key).Where(ent => ent != null).ToList(); var empList = ctx.FO_TaskEmps.ToList(); SyncContext.Post(s =>
{
team.Properties.DataSource = empList;
mno.Properties.DataSource = mInfoList;
batno.Properties.Items.AddRange(batnos.ToArray());
}, null); }
}, null); #endregion
} private void btnLoad_Click(object sender, EventArgs e)
{
try
{
var sql = DRecAnalyze.LoadSql("sql05.txt");
if (bDate.EditValue == null) throw new Exception("请指定开始时间");
if (eDate.EditValue == null) throw new Exception("请指定结束时间");
var bTime=(DateTime)bDate.EditValue;
var eTime=(DateTime)eDate.EditValue; var dCondition = string.Format(" And d.AddTime>='{0}' And d.AddTime<='{1}' ",
bTime.Date.ToString("yyyy-MM-dd 00:00:00"),
eTime.Date.ToString("yyyy-MM-dd 23:59:59")
); var tCondition = "";
if (mno.EditValue != null )
{
if (!string.IsNullOrWhiteSpace(mno.ToString()))
{
tCondition += string.Format(" And t.MNo='{0}'", mno.EditValue.ToString());
}
}
if (!string.IsNullOrWhiteSpace(batno.Text))
{
tCondition += string.Format(" And t.BatNo='{0}'", batno.Text);
}
if (team.EditValue != null)
{
if(!string.IsNullOrWhiteSpace(team.EditValue.ToString()))
{
dCondition += String.Format(" And d.TaskEmpsId={0}", team.EditValue);
}
}
var exeSql= sql.Replace("$DCondition", dCondition).Replace("$TCondition", tCondition); #region AsyncAction
Action act = () =>
{
var data = DRecAnalyze.LoadData(exeSql);
var list = DRecAnalyze.AnalyzePercentOfPass(data); //所有不良项
var symptomList = DRecAnalyze.AnalyzeSymptom(data); //生产部不良项
var assembleSymptomList = DRecAnalyze.AnalyzeAssembleSymptom(data); //主要不良项
var mainSymptom = DRecAnalyze.AnalyzeMainSymptom(data); SyncContext.Post(o =>
{
var diagram = chartControl1.Diagram as XYDiagram;
if (list.Count > )
{
diagram.AxisY.Range.MaxValue = Math.Floor(list.Max(ent => ent.Disqualification) * 1.6);
}
chartControl1.Series["Aim"].DataSource = list;
chartControl1.Series["Real"].DataSource = list;
chartControl1.Series["Disqualification"].DataSource = list; chartControl2.Series["Symptom"].DataSource = symptomList; chartControl3.Series["Symptom"].DataSource = assembleSymptomList; chartControl4.Series[].DataSource = mainSymptom;
chartControl4.Series[].DataSource = mainSymptom;
chartControl4.Series[].DataSource = mainSymptom;
}, null);
};
#endregion
this.AsyncInvoke(act);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
} } private void btnExport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SaveFileDialog fileDialog = new SaveFileDialog();
fileDialog.Filter = "Excel文件|*.xls";
fileDialog.FileName = this.Text + DateTime.Now.ToString("yyMMddHHmm");
if (fileDialog.ShowDialog() == DialogResult.OK)
{
CurCharControl.ExportToXls(fileDialog.FileName);
XtraMessageBox.Show("操作成功!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
}
}

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. XE6 c++builder 设置 font size GetPropInfo SetOrdProp

    PPropInfo ppi; PTypeInfo pti; TTypeKinds ttk; TRttiContext context; TRttiType *rttiType TObject* obj ...

  2. MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法

    首先我们建立一张带有逗号分隔的字符串. CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCH ...

  3. as3 连接mysql

    http://www.cnblogs.com/yili16438/archive/2011/04/23/2025936.html

  4. GPU寄存器相关

    1,shader model 3.0 只有256个常量寄存器,32个临时寄存器.对应dx9, opengl2.0, opengles2.0 2,shader model 4.0 有65536个寄存器, ...

  5. NUMA体系结构介绍

    为什么会有NUMA? 在NUMA架构出现前,CPU欢快的朝着频率越来越高的方向发展.受到物理极限的挑战,又转为核数越来越多的方向发展.如果每个core的工作性质都是share-nothing(类似于m ...

  6. Java 使用getClass().getResourceAsStream()方法获取资源

    之前想获取一个资源文件做一些处理,使用getClass().getResourceAsStream()一直拿不到文件. 具体的用法. 1 InputStream is = this.getClass( ...

  7. 【339】matplotlib based on python3

    Ref: python3 的 matplotlib绘图库的使用 Ref: python matplotlib绘图设置坐标轴刻度.文本 Ref: python中matplotlib的颜色及线条控制 Re ...

  8. gff/gtf格式

    1)gff3及gtf2简介 一个物种的基因组测序完成后,需要对这些数据进行解读,首先要先找到这些序列中转录起始位点.基因.外显子.内含子等组成元件在染色体中的位置信息(即注释)后才能再进行深入的分析. ...

  9. angularjs动态添加节点时,绑定到$scope中

    <html> <head> <meta charset="utf-8"/> <script src="https://cdn.b ...

  10. Spring的属性注入, byName和byType还有注入List属性

    昨天花了一晚上的时间又仔细研究了一下Spring的属性注入, 一个新的方法: 自动装载和autowire, 不过因为又想起来老师说不常用, 感觉这一晚上的时间有点亏, 还是自己太愚钝了, 反应太慢 先 ...