<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>报表统计 on 冯威的博客</title><link>https://fwhyy.com/tags/%E6%8A%A5%E8%A1%A8%E7%BB%9F%E8%AE%A1/</link><description>Recent content in 报表统计 on 冯威的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 06 Jun 2009 00:00:00 +0800</lastBuildDate><atom:link href="https://fwhyy.com/tags/%E6%8A%A5%E8%A1%A8%E7%BB%9F%E8%AE%A1/atom.xml" rel="self" type="application/rss+xml"/><item><title>ZedGraph在Web中的使用</title><link>https://fwhyy.com/2009/06/use-zedgraph-in-the-web/</link><pubDate>Sat, 06 Jun 2009 00:00:00 +0800</pubDate><guid>https://fwhyy.com/2009/06/use-zedgraph-in-the-web/</guid><description>&lt;p&gt;上一篇&lt;a href="http://blog.fwhyy.com/2009/06/sql-implementation-group-statistical-query/"&gt;SQL实现分组统计查询（按月、小时分组）&lt;/a&gt; 中介绍了按月和小时为单位怎样实现分组查询，在本文中会实现将上文查询的结果以图表的形式显示在页面上。在页面上显示图标有很多种解决方案，office的owc组建、自己写代码、或者是第三方的控件。本文中将使用ZedGraph控件来实现。选择ZedGraph有两个原因：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;该控件是开源的，在必要的时候可以根据自己的需要来修改；&lt;/li&gt;
&lt;li&gt;该控件所显示的图片是绘出来的，而不是生成的图片。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下载地址：&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=114675"&gt;http://sourceforge.net/project/showfiles.php?group_id=114675&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1 将控件引用到项目中，本示例使用的是5.1.5版。&lt;/p&gt;
&lt;p&gt;在工具栏下方的空白处点击右键—&amp;gt;添加选项卡,命名为ZedGraph&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201290709681.webp" alt="2010-12-30_101747" loading="lazy" decoding="async"&gt;

&lt;img src="https://img.fwhyy.com/2022/202201290709929.webp" alt="2010-12-30_101836" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;在ZedGraph选项卡点右键—&amp;gt;选择项…,在弹出窗口中选择下载下来的ZedGraph.Web.dll文件。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201290709682.webp" alt="https://img.fwhyy.com/14712687428710.webp" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;2 在项目中新建一aspx页面，命名为Year.aspx,将刚添加的ZedGraph控件拖到页面中，并在页面中添加一个文本框和一个按钮，文本框用来选择年份。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201290710090.webp" alt="2010-12-30_102641" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;3 切换到代码视图，添加如下代码：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;namespace ZedGraphDemo
{
 public partial class Year : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 this.ZgwYear.RenderGraph +=
 new ZedGraphWebControlEventHandler(ZgwYear_RenderGraph);
 }

 void ZgwYear_RenderGraph(ZedGraphWeb webObject,
 System.Drawing.Graphics g, MasterPane pane)
 {
 GraphPane myPane = pane[0];

 // 标题
 myPane.Title.Text = &amp;#34;每年分析（月为单位）&amp;#34;;
 myPane.XAxis.Title.Text = &amp;#34;时间&amp;#34;;
 myPane.YAxis.Title.Text = &amp;#34;访问量&amp;#34;;

 // 坐标对集
 PointPairList list = new PointPairList();
 //PointPairList list1 = new PointPairList();
 //PointPairList list2 = new PointPairList();

 //从数据库中获取数据集
 DataTable dtYear = GetData();
 if (dtYear == null)
 return;
 for (int i = 0; i &amp;lt; dtYear.Rows.Count; i++)
 {
 list.Add(Convert.ToDouble(i), Convert.ToDouble(dtYear.Rows[i][&amp;#34;Count&amp;#34;]));
 //如果有多种类型，可以添加多个
 //list1.Add(Convert.ToDouble(i), Convert.ToDouble(dtYear.Rows[i][&amp;#34;Count1&amp;#34;]));
 //list2.Add(Convert.ToDouble(i), Convert.ToDouble(dtYear.Rows[i][&amp;#34;Count2&amp;#34;]));
 }

 BarItem myBar = myPane.AddBar(&amp;#34;页面访问&amp;#34;, list, Color.Blue);
 //BarItem myBar1 = myPane.AddBar(&amp;#34;&amp;#34;, list1, Color.Red);
 //BarItem myBar2 = myPane.AddBar(&amp;#34;&amp;#34;, list2, Color.Yellow);

 myBar.Bar.Fill = new Fill(Color.Blue, Color.White, Color.Blue);
 //myBar1.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red);
 //myBar2.Bar.Fill = new Fill(Color.Yellow, Color.White, Color.Yellow);

 myPane.XAxis.MajorTic.IsBetweenLabels = true;
 // X轴Label
 string[] labels = new string[] { &amp;#34;1月&amp;#34;, &amp;#34;2月&amp;#34;, &amp;#34;3月&amp;#34;, &amp;#34;4月&amp;#34;, &amp;#34;5月&amp;#34;, &amp;#34;6月&amp;#34;,
 &amp;#34;7月&amp;#34;, &amp;#34;8月&amp;#34;, &amp;#34;9月&amp;#34;, &amp;#34;10月&amp;#34;, &amp;#34;11月&amp;#34;, &amp;#34;12月&amp;#34; };

 //设置x轴刻度
 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.LightGoldenrodYellow, 45.0f);

 pane.AxisChange(g);

 myPane.YAxis.Scale.Max += myPane.YAxis.Scale.MajorStep;
 BarItem.CreateBarLabels(myPane, false, &amp;#34;f0&amp;#34;); //在柱状图上方显示统计数
 }

 protected void btnQuerys_Click(object sender, EventArgs e)
 {
 GetData();
 }

 private DataTable GetData()
 {
 SqlHelper.ConnectionString =
 ConfigurationManager.AppSettings[&amp;#34;ConnectionString&amp;#34;].ToString();
 SqlParameter[] parameters = new SqlParameter[1];

 parameters[0] = new SqlParameter(&amp;#34;@Year&amp;#34;, SqlDbType.Int, 4);
 parameters[0].Value = this.txtYear.Value.Trim().Length == 0 ? DateTime.Now.Year :
 Convert.ToInt32(txtYear.Value.Trim());
 DataSet ds = SqlHelper.ExecuteDataset(&amp;#34;Counter_CounterYear&amp;#34;, parameters);
 if (ds != null &amp;amp;&amp;amp; ds.Tables.Count &amp;gt; 0 &amp;amp;&amp;amp; ds.Tables[0].Rows.Count &amp;gt; 0)
 {
 return ds.Tables[0];
 }
 else
 {
 return null;
 }
 }
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;4 在项目的根目录下创建一个名为ZedGraphImages的文件夹，只是作为ZedGraph绘图时的一个临时目录，并不会在该文件夹中生成图片，如果没有该文件夹会报异常。&lt;/p&gt;</description></item></channel></rss>