edgraph图表控件的强大功能令人出乎意料,与OWC相比我想应该毫不逊色,近来需求要求作出相关数据统计,不想使用BI这类的强大东西,所以搜索到 了免费的开源的Zedgraph控件。使用起来也非常方便,生成的效果可以说是五花八门,千姿百态。废话少说,先看看俺生成的样子.

图1:

图2:

图3:

这 些根据俺的需求与相关统计数据,与Gridview结合起来绘制出来的图,而从此控件的官方网站中,我们还可以看到zgraph不仅能在WebForm中 实现图表功能,在WinForm中同样可以实现,我在这里就只介绍一下WebForm的使用了。(而对应WinForm的使用,官方的Wiki里有很好的 example有VB的啊,有C#的啊,这里就不用啰嗦了)

图4:

网 上在介绍Zedgraph在webForm中使用的大多数是根据Zedgraph自身所带的数据实现,没有与Net的相关数据控件进行结合,我在这里就根 据自己在project中所使用的gridview与Zedgraph使用的心得,与大家一起分享一下.同时欢迎大家多多指教,指正错误。

Step1:下载Zgraph控件

Zgraph控件现在已经出到5.0.10版本了,分WinForm版和WebForm两种版本,你可以直接到官方下载,也可以在我这下载哈

本站下载地址:http://www.dezai.cn/lesson_info.asp?SoftID=71  (俺可是好人,不会放虫在里面)

官方下载地址:http://sourceforge.net/project/showfiles.php?group_id=114675

Step2:在Project中引用控件

一般情况下,此控件应该是使用在表现层(UI层),所以你可以直接在你的UI层直接引用,当然,为了你方便使用,你可以先把他加到控件箱里头(ToolBox)

方法: 对着控件箱右键点击->选择Choose Item -> 浏览 ->找到你下载的控件-> 选择 就可以了

这样你就可以在控件箱里看到ZedGraph的图标了,你就可以像其它控件一样使用拖拽了

上面说了这么多废话都是前奏,我们还没开始真正使用。

Step3:设置属性

先把控件拖拉到页面中或用户控件中,ZedGraph的属性很多,我这里只说明一下常用的几个属性哈,其实大多数是默认的就OK的,大多数都是对图表的外表进行相关设置,如果你想做出非常精美的图表,那就要对这些属性下一番功夫了。

ID:控件ID
BarBase: 设计图表的基准轴,默认为X
BarType:图表的类型(饼图,柱状图,曲线图等等)
Title:图表标题
OutPutFormat:输出的图表文件类型(Png,Gif,Jpeg,Ico)
width:图表宽度
height:图表高度
ChartFill: 图表背景直充(俺根据字面理解,可能不太准确)
ChartBoder: 设计图表边框样式
lineType:线条类型...... ....... 
(老实说,我一般在提供的属性里面只是去整宽度跟高度,其它的就很少动了)

Step4:引用控件

这几个东西,你就不要丢了,记得搞上去

using ZedGraph;
using ZedGraph.Web;
using System.Drawing;
using System.Drawing.Imaging;

Step5:初始化

不管你在页面中(aspx)直接使用,还是在用户控件中(ascx),均要对ZedGraph进行初始化操作,其实很简单,你就把下面这段COPY就到你的CS里面就可以了

private void InitializeComponent()
    {
        this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraph);//注册事件
        this.Load += new System.EventHandler(this.Page_Load);

}

注意:这只是放置一张ZedGraph中生成的图片,那假如是放两个呢?两个就要加一个喔

private void InitializeComponent()
    {
         this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraph1);//注册事件
        this.ZedGraphWeb2.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraph2);//注册事件
        this.Load += new System.EventHandler(this.Page_Load);

}

当你COPY了这段代码后,还要记得在page_load()中加载

protected void Page_Load(object sender, EventArgs e)
    {

InitializeComponent();

}

Step6:绑定数据

之 前在网上找到的相关教程中90%是采用官主提供的默认数组数据绑定的,最好的绑定接口是IList,由于我这没必要用我就没去研究哈,有兴趣的兄弟们可去 去试一下,ZedGraph绑定的数据源可以是很多,起初我以为只能绑定DataSet,但后面还是可以绑定DataReader的,不仅如此,数组就更 不在话下了。我这里只用DataReader,不过话说回来,所呈现的数据都是以数组整的

6.1 数据源绑定,这个就不用多说了

我在前台加了一个GridVidw,其Gridview的数据源是一个dataReader

protected void Show()
    {
        this.gdvEduList.DataSource = FeedBackInfoDataCount.EduDataCount();
        gdvEduList.DataBind();
    }

记得在page_load()加载,那么我们的page_load就这样的啦

protected void Page_Load(object sender, EventArgs e)
    {
        Show();

InitializeComponent();
    }

6.2设定图表数组绑定

这个就是核心代码了

private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, MasterPane masterPane)
    {
        GraphPane myPane = masterPane[0];

myPane.Title.Text = "消费者学历统计";  //设计图表的标题
        myPane.XAxis.Title.Text = "学历类型"; //X轴标题
        myPane.YAxis.Title.Text = "人数"; //Y轴标题

PointPairList list = new PointPairList(); //初始化一个PointPariList对象,说白了就是一条曲线或一条柱子要生出来了

//PointPairList list2 = new PointPairList();  如果你要在一个图表城显示多条曲线或柱子你就可以增加一个PointPariList对像,相对应下面的 y2,List2也是这个List相关的东西了

//PointPairList list3 = new PointPairList(); //原理同上

for (int x = 0; x & lt; this.gdvEduList.Rows.Count; x++) //循环,x的初始值为0,最终值是我数据源中的记录总数 这里主要是 gdvEdulist.Rows.Count的设定,根据你的数据源来设定
        {

int careerCount = Convert.ToInt32(this.gdvEduList.Rows[x].Cells[1].Text.Trim()); 这 个是获取所对应的每条柱子所对应的数据的文本,我是从gridvew中直接取到的

int y = careerCount;//这句就是要充的值了,将CareerCount的值都整到Y里面去了,其实你也可以直接将值赋予Y,注意,这里的Y应该代表Y轴

//double y2 = rand.NextDouble() * 300;
            //double y3 = rand.NextDouble() * 300;

list.Add(x, y); // 将XY的值整到list里面存储起来

//list2.Add(x, y2);
            //list3.Add(x, y3);
        }

BarItem myCurve = myPane.AddBar("数据统计", list, Color.Green); //增加一个Bar,List里面是不是包含了(X,Y)

myCurve.Bar.Fill = new Fill(Color.Green, Color.Green, Color.Green); //将颜色直译

//BarItem myCurve2 = myPane.AddBar("续费", list2, Color.Red);
        //myCurve2.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red);
        //BarItem myCurve3 = myPane.AddBar("升级", list3, Color.Green);
        //myCurve3.Bar.Fill = new Fill(Color.Green, Color.White, Color.Green);

myPane.XAxis.MajorTic.IsBetweenLabels = true; //这个我不知道乍么解释,不好意思

string[] labels = new string[gdvEduList.Rows.Count];

for (int i = 0; i < this.gdvEduList.Rows.Count; i++)  //这个循环主要是取到里面的说明文字,用了一个数组的方法
        {

labels[i] = this.gdvEduList.Rows[i].Cells[0].Text.Trim();

}

//以下这些是无关痛庠的属性设置了,一般默认就可以

myPane.XAxis.Scale.TextLabels = labels;

myPane.XAxis.Type = AxisType.Text;

myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f);

myPane.Chart.Fill = new Fill(Color.White, Color.White, 45.0f);

masterPane.AxisChange(g); //这句话不可少

}

当你整完上页这段后,你就可以得到下面这个东西了

我想大家应该大至明白乍样用这东西了吧。

发个源码包:点击下载此文件

上面这个是一个柱子的生成图,那其它图呢?

我只把主要代码丢出来给大家哈,有错你就要说给我听哈,不要我会贬你的哈

饼图:

点击下载此文件

多条柱子的:

点击下载此文件

WebZedGraphDemo

点击下载此文件

其实WinForm的跟WebForm的用法差不多,大家只要认真比较一下,就很容易从官方的example里面的提供的在WinForm的使用转成WebForm的啦,俺们一起努力吧.

相关IT同仁的学习文章,大家都可以看看哈

ZedGraph Wiki:

http://zedgraph.org/wiki/index.php?title=Main_Page

(codeproject.com)   http://www.codeproject.com/csharp/ZedGraph.asp

ZedGraph 总论(WinForm篇)http://blog.csdn.net/tjvictor/archive/2006/11/24/1412550.aspx

ZedGraph在Asp.net中的应用 http://tech.it168.com/n/2007-06-13/200706131521812.shtml

ZedGraph在Asp.net中的应用(2) http://www.cnblogs.com/wxukie/archive/2007/05/16/748922.html

转载于:https://www.cnblogs.com/AdaLoong/p/5625145.html

GridView+ZedGraph【转】相关推荐

  1. GridView导出到Excel和开源图表工具

    导出GridView到Excel 把GridView导出到Excel是一个很常用的功能,在网上搜索的解决方案都是一些零碎的代码,并且有很多问题,不是在所有环境下可以通用的,你甚至还有去处理一些这些代码 ...

  2. GridView使用的技巧

    今天用gridview遇到一个问题,看下图 <img src="https://img-blog.csdn.net/20160226093238343?watermark/2/text ...

  3. DataGrid和GridView单击背景变色双击颜色还原

    DataGrid中 首先我们假设.aspx文件中DataGrid的数据行的样式为 <AlternatingItemStyle BackColor="White" ForeCo ...

  4. GridView中HyperLinkField的链接使用JavaScript问题

    本来写好的程序,突然增加需求说要点链接以后刷新父页面并弹出窗口,弹出可以直接用Target属性,在网上查了查,DataNavigateUrlFields并不支持JavaScript,在别人博客上还找到 ...

  5. [学习]GridView 学习集合 -- GridView中使用超链接的技巧

    GridView中使用超链接的技巧 数据绑定方式有两种,如下示例: Eval方式 <%# Eval("id") %> Bind方式 <%# Bind(" ...

  6. ASP.NET 2.0 ajax中gridView的刷新问题!

    我是一个经常使用ASP.NET2.0的开发人员,最近看了ajax课程,也想使用一下Ajax这个强大的技术,我就使用了,在一个UpdatePanel中放入了一个gridView,果然能达我的满意效果,设 ...

  7. ASP.NET DEMO 14: 如何在 GridView/DataGrid 模板列中使用自动回发的 CheckBox/DropDownList

    有时候希望在 GridView 模板中使用自动回发的 CheckBox (autopostback=true) ,但是 CheckBox 没有 CommandName 属性,因此也就无法在 GridV ...

  8. 服务器不能显示皮肤,服务器控件gridview扩展,为什么不能应用皮肤?

    你要先确认是控件的问题还是 皮肤写的有问题.你先那微软自己的GridView 测试下你的皮肤看看是否有效, 扩展控件, 除非你是 Override 了基类的功能,一般 不会改变基类的功能的. 看看我这 ...

  9. 手把手教你如何扩展GridView之自带CheckBox

    我们在使用GridView的时候,很多时候需要使用CheckBox列,比如批量删除,批量审批,但是每每都需要记住繁琐的实现方法.多麻烦呀!再次给GridView做个手术,让它自己就能产生CheckBo ...

最新文章

  1. nsqjs客户端的部署
  2. Hessian RPC示例和基于Http请求的Hessian序列化对象传输
  3. 【视频课】模型剪枝+模型量化+知识蒸馏典型实践!
  4. EL与JSTL注意事项汇总
  5. (四)Go 语言编译流程简述
  6. python获取参数
  7. 洛谷P1306 斐波那契公约数
  8. html 预加载图片,实现网页图片预加载的几个方法
  9. linux搭建sftp服务器
  10. mysql添加字段 说明_MYSQL数据库MSSQL 添加字段说明
  11. 计算机和移动终端在信息系统中的工作原理,粤教版(2019)信息技术 必修2 2.3 信息系统中的计算机和移动终端 课件(共30张PPT)...
  12. P3191 [HNOI2007]紧急疏散EVACUATE
  13. 基因加性方差、显性方差与上位性方差定义
  14. 闲话Google拼音输入法及其它(一)
  15. MPAndroidChart 饼状图 文字重叠问题完美解决
  16. linux选择指定显卡pcie,Linux下查看显卡PCIE速率x16x8x4及设定-Go语言中文社区
  17. [Practical.Vim(2012.9)].Drew.Neil.Tip51 学习摘要
  18. php渔夫,渔夫有爱——5.2钓鱼新增内容 附日常稀有鱼经验
  19. [maven报错]mvn clean install报错BUILD FAILURE
  20. OPDS书库目录总结(添加OPDS书库目录)

热门文章

  1. 射雕三部曲的优美片段
  2. iphone 如何实现全屏截图
  3. 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多...
  4. 1/3 常用符号:类型说明符
  5. Android简单实现BroadCastReceiver广播机制
  6. zookeeper centos7 集群部署
  7. 我的Notepad++环境配置
  8. Struts2的CRUD
  9. python-pcl
  10. 每日涉猎技术点存档(2019年02月)