MS Chart 控件学习(二) 数据绑定

2023-11-02

  Chart的数据绑定非常灵活支持多种形式的数据绑定,现在主要介绍几种常见的!!

 一:关于数据源:

  1. 可以在图表的设计界面,在属性设置窗口中的Series属性下的Points中添加需要的数据.
  2. 可以在图表的设计界面中,在属性中绑定一个数据源.
  3. 可以在后台代码中,动态添加数据.
  4. 可以在后台代码中设置一个或多个数据源,直接绑定到图表中.

  根据官方文档的说法,只要是实现了IEnumerable接口 的数据类型,都可以绑定到图表控件中,例如:DataView, DataReader, DataSet, DataRow, DataColumn, Array, List, SqlCommand, OleDbCommand, SqlDataAdapter, 及OleDbDataAdapter对象。
   Chart控件支持多数据源的绑定,例如:X轴绑定一个数据集ds1,Y轴可以绑定另外一个数据集 ds2。

Chart控件的绑定方式一般有两种,常规绑定及交叉表的绑定。Chart控件的Y轴数据,支持一次绑定多个值,议会制时间、区域、使用量等之类的图形。

三 数据绑定

 1:最常见的绑定方式(XValueMember ,YValueMembers )

// 设置数据源,Ds是一个取出数据集的DataSet 
chart1.DataSource = Ds; 
    // 分别设置图表的X值和Y值 
    chart1.Series["Series1"].XValueMember = "Name"; 
chart1.Series["Series1"]. YValueMembers = "Sales"; 
    // 绑定设置的数据 
chart1.DataBind(); 

2: 直接节点绑定Points.DataBindXY

//myReader为取得的DataReader对象 
Chart1.Series["Series1"].Points.DataBindXY(myReader, "Name", myReader, "Sales"); 

这种的没大用过,和第一种差不多,不解释

3:调用DataBind实现

//myReader 为dataread
Chart1.Series["Series1"].Points.DataBind(myReader, "Name", "Sales", ""); 

上面三种方法需要自己建立Series,要显示两个柱状图,像上面的例子中的图形,那么得手动建立两个Series,然后分别进行上面的绑定操作。也可在后台动态生成Series

4:交叉表绑定DataBindCrossTable

 微软的图表控件提供了一个交叉表数据的绑定方法DataBindCrossTable,它可以根据数据动态的生成数据序列(Series),借用官方的例子,数据库的表数据如下
 我们先看看DataBindCrossTable的参数,它有两个重载方法,分别是:

public void DataBindCrossTable (
IEnumerable dataSource,
string seriesGroupByField,
string xField,
string yFields,
string otherFields,
PointSortOrder sortingOrder
)

以及

public void DataBindCrossTable (
IEnumerable dataSource,
string seriesGroupByField,
string xField,
string yFields,
string otherFields
)

每个参数的含义如下:
dataSource
要绑定的数据源.
seriesGroupByField
要分组统计的数据字段名称,例如按姓名、日期等.
xField
X轴绑定的字段名称.
yFields
Y轴绑定的字段名称,如果需要绑定多个字段,则用逗号将字段名分开.
otherFields
其它数据字段属性,就是上面刚讲的,标签、提示、Url等属性.
sortingOrder
设置数据是正确还是逆序排列.

例如:此时要以统计每个用户的年销售曲线,那么分组统计的字段名应该设置为Name,如下:

Chart1.DataBindCrossTable( 
                    myReader, 
                    "Name", 
                    "Year" , 
                    "Sales", 
                    "Label=Commissions{C}"); 

如图:

这中方法好处就是可以轻松实现多个series的绑定。 

需要注意的地方:
在进行Y轴数据绑定的时候,如果要绑定多个字段,默认情况会出错,那是因为需要设置Y轴的可保存值数量,设置为你需要保存的数量即可,设置的地点在:Series-》YValuesPrePoint,设置为你需要显示的个数即可。

五:行绑定,这种方法是利用循环将各个数据点绑定到图标中。同样可以实现交叉表绑定的效果

foreach (DataRow row in ds.Tables[0].Rows)
{
string seriesName=row["SalesRep"].ToString();
//动态添加Series
Chart1.Series.Add(seriesName);
//设置为曲线图
Chart1.Series[seriesName].ChartType = SeriesChartType.Line;
Chart1.Series[seriesName].BorderWidth = 2;
for (int col = 1; col < ds.Tables[0].Columns.Count; col++)
{
string colName = ds.Tables[0].Columns[col].ColumnName;
int yVal = Convert.ToInt32(row[colName].ToString());
Chart1.Series[seriesName].Points.AddXY(colName, yVal);
}
}

如图

这里介绍的只是比较简单的数据绑定方法,在微软给的例子当中都可以找到,如果兴趣可以去下载

MSChart 下载
http://download.microsoft.com/download/c/c/4/cc4dcac6-ea60-4868-a8e0-62a8510aa747/MSChart.exe
如果要在VS2008IDE 环境中使用,需要安装插件支持
MSChart_VisualStudioAddOn.exe
http://download.microsoft.com/download/e/6/f/e6fedd87-9119-4037-8da8-e5de429d940a/MSChart_VisualStudio
AddOn.exe

https://www.cnblogs.com/shangshi/archive/2004/01/13/2415244.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MS Chart 控件学习(二) 数据绑定 的相关文章

  • Microsoft Chart堆积柱形图有间隙

    我正在使用 Net 4 0 中的图表库来创建包含多个系列的堆叠柱形图 我的目标是一个直方图 显示多个系列 教师 每天的累积操作数 报告完成情况 经常会丢失数据 特定教师当天没有活动 当系列中缺少数据时 我会在条形图中出现间隙 My code
  • 如何更改ms图表中X轴标签的方向

    您好 我正在 winforms 应用程序中使用 Ms 图表控件来根据日期显示值 我需要将 x 轴标签值 日期 方向水平更改为垂直 我搜索了很多属性 但没有找到任何解决方案 任何人都可以帮助我解决这个问题 非常感谢 据我了解您的问题 您询问如
  • ASP.Net MS Chart Control 饼图:删除不需要的填充

    HI 我正在尝试使用 MS Chart 控件创建简单的饼图 当我的饼图在浏览器中呈现时 我在饼图周围填充了我无法摆脱的内容 我希望饼图紧靠图像边缘 没有填充或边距 关于如何实现这一目标有什么想法吗 在我下面的代码中 填充以蓝色突出显示 即
  • MSChart:如何使用文本标签而不是索引对 RangeBar 数据进行分组?

    我希望在 RangeBar 图表区域 System Windows Forms DataVisualization Charting 上绘制数据 当我在垂直轴上有标签的文本值时 我在对数据进行分组时遇到问题 这是相关代码 var conne
  • 将 StripeLine 放在系列顶部(调整 Z 索引/Z 顺序)

    我正在构建一个柱形图System Web UI DataVisualization Charting并希望显示一条虚线来代表平均值 条纹线似乎正是我正在寻找的东西 除了它位于列的下面 后面 参见示例 有没有办法调整 Z Index Stri
  • 如何对齐两个(或更多)图表的大小、滚动和网格

    我有三个涉及同一周期的信号 伏尔门 电流和能量 我在两张图表上打印数据 一张显示电压 蓝色 和电流 红色 另一张仅显示能量 橙色 它们是两个不同的图表 但实际上 它们共享相同的 X 轴 我有两个与鼠标移动同步的光标 充当两个图形的一个光标
  • 如何在散点图中绘制超过 50,000 个值,从而节省计算机资源?

    我正在使用 Visual Studio 2017 并尝试使用 C 和 winform 制作一个在散点图中显示实时值的程序 通过下面的源代码 我能够让它显示实时值 每当事件发生并且它获得新值 每秒 3 5 次 valueArray 通过 Ge
  • 如何绘制不连续的序列

    我试图弄清楚如何绘制一个不连续 不连续 的系列 这是该系列的代码 Chart Series Limit Points AddXY 20000 30 Chart Series Limit Points AddXY 1000000 30 no
  • 时间:2019-05-17 标签:c#WinformMSChartreverseYAxis

    我在 Windows 窗体上使用 MSChart 控件 我想有一个下降 Y 轴通过使用AxisY IsReversed true 但仍将 X 轴保留在底部 默认情况下 当我使用AxisY IsReversed true 然后 X 轴上升到顶
  • ASP.NET 图表控件无法在生产服务器上运行

    我有一个严重依赖图表的应用程序 目前图表可以在 ASP Net 开发服务器中工作 但是当我尝试发布到我的服务器 Win 2008 Server R2 IIS 7 时 图表不显示 使用 Firebug 我可以看到对 ChartImg axd
  • MS 图表:获取真正的 InnerPlotPosition?

    使用 Microsoft Charts 创建图表时 我需要获取图表上网格的准确位置 This page http msdn microsoft com en us library dd456696 aspx says as I unders
  • 如何将图像设置为图表轴或沿图表轴设置?

    我正在尝试使用彩色光谱带作为图表的轴 这个想法是将图像上的颜色与其沿底部 x 轴相关的波长相匹配 条带需要更改大小以匹配图表区域的变化 并扩展和收缩部分以匹配图表区域中的滚动缩放 我尝试过使用图像注释 但随着图表区域的变化 注释尺寸保持固定
  • 为什么 MSChart 不填充整个图表区域?

    我正在创建几个图表 但我无法弄清楚为什么图表的左侧和右侧有这么多空白区域 我有一个 Winforms 图表 ChartArea 和系列 图表的左侧和右侧总是有一英寸的空间 看起来像是浪费的空间 我需要更改什么设置才能减少该空白空间的大小 我
  • 如何修改C# Chart控件图表面积百分比

    如果我有一个图表控件有 2chartAreas其中 图表控件默认将图表区域放在彼此的顶部 使每个区域占据图表控件可用大小的 50 有没有办法改变图表区域的百分比 以便我可以说 让顶部图表占据该区域的 75 底部图表占据该区域的 25 所以
  • MS 图表控制:两个 X 轴,一个用于数小时,另一个用于数天(或混合两者)

    是否可以有 X 轴显示小时 HH MM 另一个 或相同的 显示天数 YYYY MM DD 以不同的间隔 所以它看起来像 09 00 10 00 11 00 12 00 01 00
  • 如何在极坐标 Mchart 上移动 Y 轴原点?

    我正在使用 mschart 制作极坐标图 我需要在图表中间制作这个 洞 我的意思是 我需要 Y 轴的 0 不要位于中心 我在 stackoverflow 上的某个地方看到了这个情节 这正是我所需要的 我该怎么做呢 为了创建看起来像提供的示例
  • MSChart 中系列和数据点的所有可用自定义属性的最终列表

    我正在使用 NET 3 5 MSChart 控件 有时我发现我需要向系列或数据点添加自定义属性 例如 Series series new Series series PieDrawingStyle SoftEdge DataPoint po
  • MS图表烛台如何设置尾部颜色

    我目前正在使用 Visual C 中的 mschart 开发烛台图 我现在创建了两个图表 创建的图表如下 问题 1 查看顶部的蜡烛图 我想将每根杆的尾部颜色应用为红色或蓝色 问题 2 查看底部的条形图 我想对此图表应用红色或蓝色 我想将相同
  • 如何暂时暂停实时数据图表的绘制更新

    我想要 暂停 图表的系列更新来完成一些工作 就像我有一个按钮 当我单击它时 它将暂停图表更新 然后当我单击恢复按钮时 它将更新系列中的所有暂停点 我知道关于 chart1 Series SuspendUpdates 但它似乎不适合我 我使用
  • 从 Microsoft Chart Control 单击数据标记获取鼠标单击事件

    我的应用程序中有一个 net 4 0 点图 我想捕获鼠标在数据标记上的点击 当用户单击特定点时 我想转到绑定表中数据来自的行 此功能是否内置于 net 图表控件中 编辑 我发现我可能实际上想要光标位置值 而不是要求用户单击特定的数据点 一旦

随机推荐

  • SQLServer数据库密码已过期问题 处理

    Sqlserver在设置登录账户信息的时候 有个复选框信息会被默认勾上 即强制实施密码策略 默认勾选上的还有强制密码过期 如果勾上了这个强制密码过期后 则你的账户密码在一定时间登录后会提示Sqlserver登录密码已过期请重新设置密码 如果
  • docker-management遇到的一些问题

    一个mysql节点 两个cloudstack management节点 先启动mysql节点 如果cloudstack management容器节点无法访问mysql节点 注意docker宿主机的iptables规则 启动cloudstac
  • 总结一波安卓组件化开源方案

    摘要 为了让大家能快速对android组件化有个整体的认识 本文将从多个维度对目前网上一些有代表性的开源组件化开发方案进行对比 从而更好的区分各组件化方案的特点 快速选择适合自己使用的方案深入学习并使用 在面试中被问到时也能做到心中有数 前
  • PCL 从深度图像中提取边界

    一 图像边界 深度图像边界 计从前景跨越到背景的位置定义为边界 具体有 物体边界 这是物体的最外层和阴影边界的可见点集 阴影边界 毗邻与遮挡的背景上的点集 Veil点集 在被遮挡物边界和阴影边界之间的内插点 它们是有激光雷达获取的3D距离数
  • docker基础6——制作镜像(dockerfile)

    文章目录 一 基本了解 1 1 基于centos构建镜像 1 2 基于alpine制作镜像 二 常用指令 三 制作httpd镜像 一 基本了解 Dockerfile 是一个文本格式的配置文件 可以使用Dockerfile 快速创建自定义镜像
  • 飞机降落(dfs 全排列)

    题目描述 N 架飞机准备降落到某个只有一条跑道的机场 其中第 i 架飞机在 Ti 时刻到达机场上空 到达时它的剩余油料还可以继续盘旋 Di 个单位时间 即它最早 可以于 Ti 时刻开始降落 最晚可以于 Ti Di 时刻开始降落 降落过程需要
  • C# 枚举 enum(学习心得 17)

    枚举是一组命名整型常量 枚举类型是使用 enum 关键字声明的 C 枚举是值类型 枚举包含自己的值 且不能继承或传递继承 超级小白友好 讲解C 基础 每集5分钟轻松学习 拒绝从入门到放弃 声明 enum
  • linux服务器无法ssh怎么解决,linux服务器有可能无法连接ssh

    新安装的linux服务器有可能无法连接ssh 这可是怎么办 我的服务器是centOS6 9的版本 1 首先关闭 SELINUX vi etc selinux config SELINUX enforcing 注释掉 SELINUXTYPE
  • SpringBoot三种注解启动方式

    1 SpringBoot内置了Tomcat Jetty等容器 所以可以通过注解方式进行启动 2 SpringBoot注解启动的原理 SpringBoot main方法 是程序入口 启动SpringBoot项目 创建内置tomcat服务器 使
  • windows 10 webrtc 下载与编译以及遇到的问题

    下载 1 由于webrtc 源码在 墙外 所以需要科学上网 自行解决 当然现在webrtc 有国内的镜像地址 https webrtc org cn mirror 内附编译下载教程自行查阅 下载后只包含M79 和最新的master 分支 由
  • dao层动态sql利器!数据持久化jpa插件spring-data-jpa-extra?Fenix!

    把hibernate mybatis都整合到一个项目中 有没有觉得臃肿繁琐 我们知道 dao层 会用数据持久化框架 如hibernate mybatis等 他们都实现了jpa规范 几年来 spring想统领这个层 有spring jpa d
  • 追踪邮件发送者的地理位置

    今天偶然发现Gmail可以追踪发送者的IP位置 于是忍不住跃跃欲试 邮件不只有文本内容 还有额外的信息在每个邮件的header里面 一般的邮件客户端都是不能查看header的 Gmail和雅虎邮箱可以 网易邮箱的查看信头也能实现 打开Gma
  • 【GitHubShare】Web 前后端开发、以太坊基础、智能合约、密码学、数据分析

    区块链开发指南 作者通过 NFT 进行募资 然后将资金用于激励社区创作 让参与教程编写的人都能获益 从项目创建之初 教程便一直保持开放 GitHub github com dcbuild3r blockchain development g
  • 第二章 主机到网络层(网卡)--基于Linux3.10

    TCP IP协议栈模型 网络协议栈常用OSI七层模型 实际上Linux网络协议栈使用的却是四层模型 图2 1展示了OSI七层和四层模型它们之间各层对应关系 图2 1的最左侧一列是数据在协议栈上各层的称谓 frame位于主机到网络层 Laye
  • C++数组(数组定义方式、数组名作用、数组地址)

    文章目录 1 数组概述 2 一维数组 2 1 一维数组定义方式 2 2 一维数组数组名 2 2 1 一维数组名称的作用 2 2 2 一维数组名的2种特例情况 2 3 一维数组的地址 2 4 冒泡排序 3 二维数组 3 1 二维数组定义方式
  • logback--基础--03--配置--logger

    logback 基础 03 配置 logger 代码位置 https gitee com DanShenGuiZu learnDemo tree master logback learn 1 设置logger 1 1 lt root gt
  • 整理6个超好用的在线编辑器!

    随着 Web 开发对图像可扩展性 响应性 交互性和可编程性的需求增加 SVG 图形成为最适合 Web 开发的图像格式之一 它因文件小 可压缩性强并且无论如何放大或缩小 图像都不会失真而受到欢迎 然而 为了编辑 SVG 图像 需要使用 SVG
  • linux下显示隐藏文件

    linux下显示隐藏文件有两种可能 显示所有文件 包括隐藏文件 仅显示隐藏文件 显示所有文件 包含隐藏文件 ls A 只显示隐藏文件 l 或者 ls d
  • react + typescript解决TS2339:Property ‘..‘ does not exist on type ‘Readonly<{}>‘错误

    说来比较惭愧 已经两个多月没有更新博客了 由于手头上的项目快进入收尾阶段了 一直没有时间与欲望更新博客 前几天boss又下发了一个新的项目 采用taro react reflux typescript taroUI做一个微信小程序 说多了都
  • MS Chart 控件学习(二) 数据绑定

    Chart的数据绑定非常灵活支持多种形式的数据绑定 现在主要介绍几种常见的 一 关于数据源 可以在图表的设计界面 在属性设置窗口中的Series属性下的Points中添加需要的数据 可以在图表的设计界面中 在属性中绑定一个数据源 可以在后台