~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:WPF 、Charts

撰写日期:2020年09月16日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

之前使用Echarts图表时都是在MVC中引入Echarts插件,才能使用Echarts图表,那么现在来看下在WPF中是如何使用Chart图表的,同样的也要引用一下Charts应用程序扩展,如下:

引用之后,想要实现Charts图表数据查询同样要三步骤组成:1、数据库编写、2、服务端编写、3、客户端编写

一、数据库方法:

------------ 查询销售漏斗统计

IF(@type='UserControl_SelectSales')

BEGIN

SELECT  ROW_NUMBER () over (order by PW_State.StateName)  AS number,---序号

RTRIM(PW_State.StateName) AS StateName,--状态类型

COUNT(StateName) AS sum

FROM   PW_State INNER JOIN

PW_Market ON PW_State.StateID = PW_Market.StateID

GROUP BY StateName

ORDER BY   cast(COUNT(StateName) as int ) DESC

END

  • 服务端编写代码如下:

//操作契约

[OperationContract]

//查询销售漏斗统计

public DataSet UserControl_SelectSales()

{SqlParameter[] mySelectSales = {

new SqlParameter("@type",SqlDbType.Char),};

mySelectSales[0].Value = "UserControl_SelectSales";

DataTable myDataTable = myDAL.QueryDataTable("SalesStatistics", mySelectSales);

DataSet myDataSet = new DataSet();

myDataSet.Tables.Add(myDataTable); // 添加参数

return myDataSet;} // 返回值

  • 客户端代码又分两部分:一、查询出你要统计数数据 二、编写Charts图表代码
  1. 、查询数据代码:

//销售统计

DataTable dt = myClient.UserControl_SelectSales().Tables[0];

//实例化【X轴】和【Y轴】

List<string> strx = new List<string>();

List<string> stry = new List<string>();

for (int i = 0; i < dt.Rows.Count; i++)

{

strx.Add(dt.Rows[i]["StateName"].ToString().Trim());//赋值X轴的字段名

stry.Add(dt.Rows[i]["sum"].ToString().Trim());//赋值Y轴的字段名

}

CreateChartColumn("销售统计", strx, stry); //标题

  1. 、Charts图表代码:(每一句都有详细的解释)

//饼状图

private void CreateChartColumn(string name, List<string> valuex, List<string> valuey)

{

//(1)创建一个图表

Chart chart = new Chart();

//(2) 基本属性

//设置图标的宽度和高度

chart.Width = 500;

chart.Height = 250;

chart.Margin = new Thickness(-550, -300, 0, 0);

//是否启用打印和保持图片

chart.ToolBarEnabled = true;

//设置图标的属性

chart.ScrollingEnabled = false;//是否启用或禁用滚动

chart.View3D = true;//3D效果显示

//(1)创建一个标题的对象

Title title = new Title();

//设置标题的名称

title.Text = name;

title.Padding = new Thickness(0, 10, 5, 0);

//向图标添加标题

chart.Titles.Add(title);

//(2)创建轴

Axis yAxis = new Axis();

//设置图标中Y轴的最小值永远为0

yAxis.AxisMinimum = 0;

//设置图表中的Y轴的后缀

yAxis.Suffix = "个";

chart.AxesY.Add(yAxis);

//创建一个新的数据线

DataSeries dataSeries = new DataSeries();

dataSeries.RenderAs = RenderAs.Doughnut;

//设置数据点

DataPoint dataPoint;

for (int i = 0; i < valuex.Count; i++)

{ //创建一个数据点的实例

dataPoint = new DataPoint();

//设置X轴点

dataPoint.AxisXLabel = valuex[i];

//设置Y轴点

dataPoint.YValue = double.Parse(valuey[i]);

//添加数据点

dataSeries.DataPoints.Add(dataPoint); }

//添加数据线到数据序列

chart.Series.Add(dataSeries);

//将生产的图表增加到Grid,然后通过Grid添加到上层Grid

Grid gr = new Grid();

gr.Children.Add(chart);

Simon.Children.Add(gr);}

private void dataPoint_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

{

DataPoint dp = sender as DataPoint;

MessageBox.Show(dp.YValue.ToString()); }

如果你想要其它形状的Charts图表的话也是可以实现的,如:Column = 列,Line = 行,Pie = 派,Bar = 酒吧(柱状图),Area = 面积,Doughnut = 甜甜圈(饼状图),StackedColumn = 堆叠列,StackedColumn100  = 堆叠柱状100,StackedBar = 堆叠条,StackedBar100 堆叠杠100,StackedArea = 堆积面积,StackedArea100 = 堆叠面积100,Bubble = 泡沫,Point = 点,StreamLineFunnel = 流线漏斗,SectionFunnel = 截面漏斗,Stock = 股票,CandleStick = 烛台,StepLine = 步长,Spline = 花键,Radar = 雷达,Polar = 极地,Pyramid = 金字塔,QuickLine = 快线,

只要在 设置数据线的格式那换上以上的样式就可以实现的了,其它都不变,

dataSeries.RenderAs = RenderAs.Radar;(标红色字体这)。

最后结果图如下:

你点击上图的任何一种颜色它都会显示出它对应的数据来还有所占比例。

WPF中嵌套charts图表查询数据相关推荐

  1. django model filter_django中探索如何提高查询数据效率

    平时用到django时候挺多, 最近有在搞数据库表分区的实践, 所以顺便尝试在django如何提高查询效率, 也就尝试在django中加入线程和协成的代码, 看一下效果 相关工具 django + p ...

  2. Echar 制作图表+查询数据

    为了表达作为一个弱小程序员可望而不可即的很多事情~~~摸索了4天~~~被shift哥1小时搞定的查询+echar数据显示,立马秒得渣都不剩~~~ 其实我还没完全懂啊~~~╮(╯▽╰)╭...只能说哎, ...

  3. jdbc中递归树封装查询数据

    jdbc中递归树封装查询 一.递归树封装多次查询 数据库驱动包.jar文件: ①数据库数据准备(使用IDEA(64位)软件和phpstudy软件,即小皮系统(64位)) ②实体:为了使用通用 Dao ...

  4. Excel 中使用SQL 语句查询数据(七)-----用LIKE 运算符进行模糊匹配查询

    这篇博文要和大家分享的是用LIKE 运算符进行模糊匹配查询下图数据源商品代号包含数字的数据. 我们用Microsoft query连接数据源,步骤请参考本系列第一篇博文.语句如下图 其中 LIKE ' ...

  5. Django中引入echarts图表做数据可视化

    本篇博客将详细介绍Django中如何引入echarts库: 从echarts官网中选择所需要的图表的样式 选择好样式打开此页面,将红框中代码放入前端页面中 需要放入的位置: <script ty ...

  6. 如何在Access2007中使用日期类型查询数据

    select * from 表 where datediff("d",日期型的字段,#2008-09-01#)=0 或 select * from 表 where 日期型的字段 & ...

  7. 数据库应用——DQL查询数据(连表查询 子查询 详细案例)

    DQL查询数据 DQL Select完整的语法 练习用的sql脚本 指定查询字段 where 条件子句 连表查询(重要) 三种join的比较 连表查询练习 自连接 分页和排序 子查询 分组和过滤 DQ ...

  8. OpenTSDB 开发指南之 查询数据

    前面博主写了一篇文章去介绍opentsdb的http接口的使用方法,但是某一些接口的使用还是比较复杂,这篇文章会通过example来详细讲述opentsdb的一些特性. 本文的举的例子有这些: 基本的 ...

  9. sqllite查询数据量_详解SQLite中的查询规划器

    1.0 介绍 查询规划器的任务是找到最好的算法或者说"查询计划"来完成一条SQL语句.早在SQLite 3.8.0版本,查询规划器的组成部分已经被重写使它可以运行更快并且生成更好的 ...

最新文章

  1. js公共时间戳方法es6
  2. 平衡二叉树AVL详解
  3. easyUI 运用窗口和form表单制作导出功能
  4. BZOJ:1001狼抓兔子
  5. Pulseaudio之同步/异步(十一)
  6. 【渝粤教育】国家开放大学2019年春季 1152教育法学 参考试题
  7. 打开plsqldev报错解决
  8. linux运维工程师的发展,Linux运维工程师发展前景
  9. LeetCode 845——数组中的最长山脉
  10. 123457123457#0#-----com.yuming.ZuiNiuChengYu--前拼后广--最牛成语
  11. 弘辽科技:淘宝提升销量不评价有效果吗?不提升销量能做起来吗?
  12. Linux网卡bond
  13. U-boot中控制台命令
  14. 学生参加计算机比赛后的分析,湘南学院学生参加基本功大赛篮球比赛成绩分析和反思.doc...
  15. 写个dump_stack【转】
  16. linux下设置定时执行脚本
  17. 前端-vue-node.js+很多学习资料
  18. 低频数字式相位测试仪的原理与使用
  19. 文献阅读-融合注意力机制的 IETM 细粒度跨模态检索算法
  20. 新版標準日本語 - 単語

热门文章

  1. Spring 框架 AOP 的总结
  2. 【GitHub】Linux 内核揭秘:linux-insides-zh
  3. Linux timeout命令的使用:timeout - run a command with a time limit
  4. win10安装Unbuntu的Linux系统的虚拟机02
  5. Spring Data说明
  6. 分布式、集群和负载均衡的概念解释
  7. 计算机学硕英语考什么意思,计算机考研都考什么?
  8. c语言 函数 收集,c语言库函数大全--资料收集+
  9. c语言学习-自定义并调用函数求三个数的最小公倍数
  10. python实现绘制信号序列语谱图