声明、数据库连接机制框架已经写好。框架模式是MVC模式。就以我的from测试。我的做法是在查询页面创建一个按钮,然后在这个按钮上绑定一个点击事件。点击查询按钮把查询条件传到需要显示图例的页面。查询页面→显示图例页面

new一下需要传值的页面例如我这样

private void simpleButton2_Click(object sender, EventArgs e)

{
FrmTyp p = new FrmTyp(ConvertEx.ToSqlMinDate(txt_CREATIONDATE1.DateTime),
ConvertEx.ToSqlMinDate(txt_CREATIONDATE2.DateTime),
textEdit11.Text,
EXAMINOR1,
txt_CCNO.Text,
textEdit1.Text,
DRAW_CD.Text,
REPORTID.Text,
PRODUCT_TYP.Text);
p.Show();
}

1、创建一个from窗口,添加控件chart。

2、from全部代码和页面

using CSFramework.Common;
using CSFramework3.Server.DataAccess;
using DevExpress.XtraCharts;
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace CSFramework3.AccountModule
{
public partial class FrmTyp : CSFramework.Library.frmBase//CSFramework.Library.frmBase 继承了皮肤,如果没有皮肤就不用继承。
{
DateTime CREATIONDATE1, CREATIONDATE2;
string EXAMINOR1, textEdit11, CCNO, textEdit1, DRAW_CD, REPORTID , PRODUCT_TYP;//定义了从另一个页面传过来的参数,就是查询条件。如果没有查询条件就删除
public FrmTyp(DateTime CREATIONDATE1, DateTime CREATIONDATE2, string textEdit11, string EXAMINOR1,
string CCNO, string textEdit1, string DRAW_CD, string REPORTID, string PRODUCT_TYP)
{
InitializeComponent();
this.CREATIONDATE1 = CREATIONDATE1;
this.CREATIONDATE2 = CREATIONDATE2;
this.textEdit11 = textEdit11;
this.EXAMINOR1 = EXAMINOR1;
this.CCNO = CCNO;
this.textEdit1 = textEdit1;
this.DRAW_CD = DRAW_CD;
this.REPORTID = REPORTID;
this.PRODUCT_TYP = PRODUCT_TYP;
}

private void FrmTyp_Load(object sender, EventArgs e)
{
//设置图表标题
ChartTitle ct = new ChartTitle();
ct.Text = "统计图";
ct.TextColor = Color.OrangeRed;//颜色
ct.Font = new Font("Tahoma", 14);//字体
ct.Dock = ChartTitleDockStyle.Top;//停靠在上方
ct.Alignment = StringAlignment.Center;//居中显示
this.chartControl1.Titles.Add(ct);
}
/// <summary>
/// 统计图
/// </summary>
private Series mySeries;
/// <summary>
/// 手动加载统计图信息
/// </summary>
private void LoadChartInfo(DateTime CREATIONDATE1, DateTime CREATIONDATE2, string textEdit11, string EXAMINOR1,
string CCNO, string textEdit1, string DRAW_CD, string REPORTID, string PRODUCT_TYP)
{
this.chartControl1.Series.Clear();

//新建Series
switch (comboBoxEdit1.Text)
{
case "直方图":
mySeries = new Series("直方图", ViewType.Bar);
break;
case "3D直方图":
mySeries = new Series("3D直方图", ViewType.Bar3D);
break;
case "圆饼图":
mySeries = new Series("圆饼图", ViewType.Pie);
break;
case "3D圆饼图":
mySeries = new Series("3D圆饼图", ViewType.Pie3D);
break;
case "心电图型":
mySeries = new Series("心电图型", ViewType.Spline);//swift plot
break;
default:
mySeries = new Series("直方图", ViewType.Bar);
break;
}
//设置Series样式
mySeries.ArgumentScaleType = ScaleType.Qualitative;//定性的
mySeries.ValueScaleType = ScaleType.Numerical;//数字类型
mySeries.PointOptions.PointView = PointView.ArgumentAndValues;//显示表示的信息和数据
mySeries.PointOptions.ValueNumericOptions.Format = NumericFormat.Number;//NumericFormat.Percent;//用百分比表示
//mySeries.PointOptions.ValueNumbericOptions.Precision = 0;//百分号前面的数字不跟小数点
//绑定数据源
string str = Frmcpsy.strccsy;
if (PRODUCT_TYP == "1")
{
PRODUCT_TYP = "齿轮泵";

//QueryTyp是数据访问层的一个方法,就是指向SQL语句。你怎么查询数据库的这里就怎么指向查询语句。
DataTable ds = new dalTDTX_CCSY(Loginer.CurrentUser).QueryTyp(CREATIONDATE1, CREATIONDATE2, EXAMINOR1,

textEdit11, CCNO, textEdit1, DRAW_CD, REPORTID, PRODUCT_TYP);
mySeries.DataSource = ds.DefaultView;// 获取到的数据
mySeries.ArgumentDataMember = "WH_CD";//绑定的文字信息(名称)
mySeries.ValueDataMembers[0] = "COUNTS";//绑定的值(数据)
}
if (PRODUCT_TYP == "3")
{
PRODUCT_TYP = "多路阀";
DataTable ds = new dalTDTX_CCSY(Loginer.CurrentUser).QueryTyp1(CREATIONDATE1, CREATIONDATE2, EXAMINOR1,
textEdit11, CCNO, textEdit1, DRAW_CD, REPORTID, PRODUCT_TYP);
mySeries.DataSource = ds.DefaultView;// 获取到的数据
mySeries.ArgumentDataMember = "WH_CD";//绑定的文字信息(名称)
mySeries.ValueDataMembers[0] = "COUNTS";//绑定的值(数据)
}
//添加到统计图上
this.chartControl1.Series.Add(mySeries);
//图例设置
SimpleDiagram3D diagram = new SimpleDiagram3D();
diagram.RuntimeRotation = true;
diagram.RuntimeScrolling = true;
diagram.RuntimeZooming = true;
}
//导出图片
private void simpleButton2_Click(object sender, EventArgs e)
{
string selUrl = null;
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
selUrl = folderBrowserDialog1.SelectedPath;
chartControl1.ExportToImage(selUrl + "\\" + "不良类型" + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
MessageBox.Show("保存成功!");
}
else
{
return;
}
}
//导出Excel
private void simpleButton3_Click(object sender, EventArgs e)
{
string selUrl = null;
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
selUrl = folderBrowserDialog1.SelectedPath;
chartControl1.ExportToXls(selUrl + "\\" + "不良类型" + ".xls");
MessageBox.Show("保存成功!");
}
else
{
return;
}
}
private void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e)
{
LoadChartInfo(CREATIONDATE1, CREATIONDATE2, EXAMINOR1, textEdit11, CCNO, textEdit1, DRAW_CD, REPORTID, PRODUCT_TYP);
}
private void FrmTyp_Shown(object sender, EventArgs e)
{
LoadChartInfo(CREATIONDATE1, CREATIONDATE2, EXAMINOR1, textEdit11, CCNO, textEdit1, DRAW_CD, REPORTID, PRODUCT_TYP);
}
}
}

C#语言Devdevexpress控件chart在C/S框架中的使用的更多相关文章

  1. 背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容

    [源码下载] 背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容 作 ...

  2. WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书

    原文:WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书 最近项目中使用弹出控件Popup,发现弹出框的对齐方式在不同的系统中存在不同(Popup在win10上是 ...

  3. 客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值。

    客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值.     无论是什么的html控件,只要加上了runat="server" ...

  4. WPF封装控件时 检测是否在设计模式中

    原文:WPF封装控件时 检测是否在设计模式中 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Vblegend_2013/article/detail ...

  5. WinForm中的图表控件Chart

    第一次接触Chart控件,发现了这个Chart控件的实例项目,非常强大,用示例的方法介绍了该控件各式各样的用法. 下载链接

  6. ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)

    下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整 ...

  7. Winform 后台将指定的控件集合添加到制定容器中

    /// <summary> /// 把按钮按照行数分割排列 /// </summary> /// <param name="ControlArry"& ...

  8. wpf的UserControl用户控件怎么添加到Window窗体中

    转载自 http://www.cnblogs.com/shuang121/archive/2013/01/09/2853591.html 我们来新建一个用户控件UserControl1.xaml &l ...

  9. 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug

    本文使用博客园Markdown编辑器进行编辑 1.问题呈现 项目中使用了jQuery UI的Dialog控件,一般用来处理需要提示用户输入或操作的简单页面.逻辑是修改一个广告的图片和标题. 效果截图如 ...

随机推荐

  1. 2017-07-06(grep man apropos )

    grep 格式 grep [选项]  字符串  文件名 选项 -i 忽略大小写 -v 排除指定字符串 作用 在文件中查找字符串 例子 grep  "size"  anaconda- ...

  2. Nginx日志中的金矿 -- 好文收藏

    转:http://www.infoq.com/cn/articles/nignx-log-goldmine Nginx(读作Engine-X)是现在最流行的负载均衡和反向代理服务器之一.如果你是一名中 ...

  3. BSA Network Shell系列-redi命令

    redi ## 1 功能概述 redi将输出重定向到一个文件中 ## 2 语法 redi [-?] [-a] filename ## 3 使用示例 1 将输出重定向到隐式路径所在主机的/tmp/hah ...

  4. 转载-Linux Shell 数组建立及使用技巧

    转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 如侵犯版权,请联系我删除 linux shell在编程方面比win ...

  5. linkin大话面向对象--组合

    继承是实现类重用的重要手段,但是它有一个最大的坏处:破坏封装.相比之下,组合也是实现类重用的重要方式,但是采用组合方式实现类重用则能提供更好的封装性.比如人有手一样,在人的类中增加一个手的属性. 何时 ...

  6. Linux使用top与free命令查看CPU与内存使用情况

    top命令: 显示内容解释: 第一行top分别为:当前时间:系统运行天数:使用者个数:系统负载的平均值,后面的三个值分别为1分钟前.5分钟前.15分钟前进程的平均数,这个数值超过 CPU 数目时,说明 ...

  7. Android Studio 下获取debug sha1和md5

    Open Android Studio Open Your Project Click on Gradle (From Right Side Panel, you will see Gradle Ba ...

  8. AM调制的FPGA实现

    一.说明: 功能:AM调制 平台:Vivado 2016.4 和 Matlab R2017a 二.原理: 1. AM调制原理 AM已调信号的时域表达式: 已调信号的频域表达式: 本质上AM调制就是频谱 ...

  9. NIO笔记---上

    小弟前端时间由于开发个管理系统导致断更了近20天!!马上就要春招了,学习了一下NIO,将笔记记录下,希望和我一样的18届毕业生都能找到满意的公司!! 本文记录了NIO与IO的区别,缓冲区的数据存取,直 ...

  10. mysql数据库在Linux下安装与配置

      mysql是一种开放源代码的关系型数据库系统(RDBMS),使用最常用的数据库管理语言--结构化查询语句(SQL)进行数据库管理. 由于mysql的开源,因此任何人都可以在General Publ ...