VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 707|回复: 4

如何将DataGrid显示的数据用柱状图表示出来?

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-19 18:00:02 | 显示全部楼层 |阅读模式
如何将DataGrid显示的数据用柱状图表示出来?

例如:DataGrid有三列
===================================
项目名称     模块名称    完成时间
------------------
A项目          登录模块       2小时
A项目          注册模块       3小时
B项目          查询模块       1小时
B项目          统计模块       4小时
====================

要实现的柱状图为:

A项目显示为一个2+3=5的柱子
旁边有登录模块为2的小柱子和注册模块为3的小柱子
B项目显示为一个1+4=5的柱子
旁边有查询模块为1的小柱子和统计模块为4的小柱子
所有柱子在同一个水平线上,最好有不同颜色区分

目前本人正在研究中 还没有完全实现 网上也没有找到合适的图表控件
如果有哪位大侠对图标显示数据技术比较熟悉 请指点一下 多谢了
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-6-24 18:15:01 | 显示全部楼层
用owc控件.
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-6-24 20:30:01 | 显示全部楼层
private void DrawChart()
                {
                        // 在此处放置用户代码以初始化页面
                        //创建ChartSpace对象来放置图表
                        OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass ();

                        //在ChartSpace对象中添加图表,Add方法返回chart对象
                        OWC.WCChart objChart = objCSpace.Charts.Add(0);

                        //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
                        objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered;

                        //指定图表是否需要图例
                        objChart.HasLegend = true;

                        //给定标题
                        objChart.HasTitle = true;
                        objChart.Title.Caption= "上半年分布图";

                        //给定x,y轴的图示说明
                        objChart.Axes[0].HasTitle = true;
                        objChart.Axes[0].Title.Caption = "Y : 数量";
                        objChart.Axes[1].HasTitle = true;
                        objChart.Axes[1].Title.Caption = "X : 月份";

                        //计算数据
                        /*categories 和 values 可以用tab分割的字符串来表示*/
                        string strSeriesName = "图例 1";
                        string strCategory = "1" + '\t' + "2" + '\t' + "3" + '\t'+"4" + '\t' + "5" + '\t' + "6" + '\t';
                        string strValue = "9" + '\t' + "8" + '\t' + "4" + '\t'+"10" + '\t' + "12" + '\t' + "6" + '\t';

                        //添加一个series
                        objChart.SeriesCollection.Add(0);

                        //给定series的名字
                        objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames,
                                + (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);

                        //给定分类
                        objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimCategories,
                                + (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);

                        //给定值
                        objChart.SeriesCollection[0].SetData
                                (OWC.ChartDimensionsEnum.chDimValues,
                                (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strValue);
                        //创建GIF文件的相对路径.
                        string strRelativePath = "./test.gif";
                        //输出成GIF文件.
                        string strAbsolutePath = Server.MapPath(strRelativePath);
                        objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350);


                        //把图片添加到placeholder.
                        string strImageTag = "<IMG SRC='" + strRelativePath + "'/>";
                        ChartHolder.Controls.Add(new LiteralControl(strImageTag));

                }
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-6-28 22:45:01 | 显示全部楼层
参考楼上的,用OWC,装了OFFICE就有的
回复

使用道具 举报

1

主题

60

帖子

37.00

积分

新手上路

Rank: 1

积分
37.00
发表于 2020-7-13 12:30:01 | 显示全部楼层
用ZedGraph还可以实现柱装图中的分段图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表