一个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. J2SE 8的泛型

    泛型的简单使用 1. 泛型一般用E表示集合中元素;k和v表示Map中的key和value;R表示return值;T/U/S表示任意类型 //(1) 简单单个元素的泛型 Box<String> ...

  2. js倒计时发送验证码按钮

    var wait=60; function time(o) { if (wait == 0) { o.removeAttribute("disabled"); o.value=&q ...

  3. WDA-FPM-2-APPLICATION-TABSTRIP(OIF)

    转载:https://www.cnblogs.com/sapSB/p/10081344.html   FPM二:简单的APPLICATION-TABSTRIP(OIF) 1.新建WDA程序ZLYFPM ...

  4. UI5-文档-4.17-Fragment Callbacks

    现在我们已经集成了对话框,是时候添加一些用户交互了.用户肯定希望在某个时候再次关闭对话框,因此我们添加一个按钮来关闭对话框并分配一个事件处理程序. Preview The dialog now has ...

  5. LESS CSS 实例

    值得参考的 10 个 LESS CSS 实例   2 收藏(185) LESS, Sass 和其他 CSS 预处理器是一种超棒的方法用来扩展 CSS 功能,使之更适合程序员.你可以使用变量.函数.混合 ...

  6. xslt基础学习

    今天下午工作完成没事,登w3c的网站学习了一下xslt的基础知识,主要是因为工作中xml用的比较多,xslt也有用到,所以在这里学习一下. XSLT:一种用于转换 XML 文档的语言. XSLT 用于 ...

  7. box2d 计算下一帧的位置/角度

    var dt:Number=1/30; var y0:Number=_body.GetPosition().y; var y:Number=y0+_body.GetLinearVelocity().y ...

  8. How to Pronounce T and D between Consonants

    How to Pronounce T and D between Consonants Share Tweet Share Tagged With: Dropped T What happens to ...

  9. 如何将String转换为int

    1. int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); Integer.parseIn ...

  10. orientdb 学习

    简介 OrientDB 是一款 NoSQL 数据库.是一种文档-图数据库.即:既具有文档数据库的特性,又具有图数据库的功能. 端口 2424  OrientDB 监听 二进制 访问的的端口 (即:通过 ...