/*Title: ZedGraph 在 web 中的应用
 *Author: AlvinYe
 *Date: Aug 27,2006
 *Description: ZedGraph 在 web 中的应用
 *Environment: WinXP sp2,Vs2005 pro,.netFramework 2.0
 *KeyWord: ZedGraph 在 web 中的应用 theme
 */

1.新建一个站点
2.引用ZedGraph.Web.dll 和 ZedGraph.dll 
www.ZedGraph.org 可以下载到
 
3修改default2.aspx 改为以下内容
<%@ Page Language="C#" CodeFile="Default2.aspx.cs" Inherits="Default2" Theme="" %>
<%@ Register TagPrefix="zgw" Namespace="ZedGraph.Web" Assembly="ZedGraph.Web" %>
<ZGW:ZEDGRAPHWEB id="ZedGraphWeb1" runat="server" width="500" Height="375" RenderMode="RawImage" />
 
注意其中的Theme="" 如果你在web.config 中已经设置好theme的话默认所有页都会先加载theme
因为我们这里只要生成图片,如果加载Theme 就会显示错误,看到乱码.
 
4.修改default.aspx.cs 改为
using System;
using System.Drawing;
 
using ZedGraph;
using ZedGraph.Web;
 

public partial class Default2 : System.Web.UI.Page
{
  protected void Page_Load(object sender, System.EventArgs e)
  {
  }
 
  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
    //
    // CODEGEN: This call is required by the ASP.NET Web Form Designer.
    //
    InitializeComponent();
    base.OnInit(e);
  }
 
  /// <summary>
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  /// </summary>
  private void InitializeComponent()
  {
    this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraph);
 
  }
  #endregion
 
  /// <summary>
  /// This method is where you generate your graph.
  /// </summary>
  /// <param name="masterPane">You are provided with a MasterPane instance that
  /// contains one GraphPane by default (accessible via masterPane[0]).</param>
  /// <param name="g">A graphics instance so you can easily make the call to AxisChange()</param>
  private void OnRenderGraph(System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)
  {
    // Get the GraphPane so we can work with it
    GraphPane myPane = masterPane[0];
 
    myPane.Title.Text = "学期成绩表";
    myPane.XAxis.Title.Text = "学期";
    myPane.YAxis.Title.Text = "成绩";
 
    PointPairList list = new PointPairList();
    PointPairList list2 = new PointPairList();
    PointPairList list3 = new PointPairList();
 
    DataTable dt = BuildDt();
 
    for (int i = 0; i < dt.Rows.Count; i++)
    {
      if (dt.Rows[i]["Id"].ToString() == "1")
      {
        list.Add(Convert.ToDouble(dt.Rows[i]["XueQi"]), Convert.ToDouble(dt.Rows[i]["FenShu"]), "Alvin");
      }
      else if (dt.Rows[i]["Id"].ToString() == "2")
      {
        list2.Add(Convert.ToDouble(dt.Rows[i]["XueQi"]), Convert.ToDouble(dt.Rows[i]["FenShu"]), "Robin");
      }
      else
      {
        list3.Add(Convert.ToDouble(dt.Rows[i]["XueQi"]), Convert.ToDouble(dt.Rows[i]["FenShu"]), "Jim");
      }
    }
 
    LineItem MyLine = myPane.AddCurve("Alvin", list, Color.Red, SymbolType.HDash);
    LineItem MyLine2 = myPane.AddCurve("Robin", list2, Color.Green);
    LineItem MyLine3 = myPane.AddCurve("Jim", list3, Color.Blue);
    masterPane.AxisChange(g);
  }
 
  private DataTable BuildDt()
  {
    DataTable dt = new DataTable("Students");
    dt.Columns.Add("Id");
    dt.Columns.Add("Name");
    dt.Columns.Add("XueQi");
    dt.Columns.Add("FenShu");
 
    dt.Rows.Add(1, "Alvin", "1", 100);
    dt.Rows.Add(1, "Alvin", "2", 90);
    dt.Rows.Add(1, "Alvin", "3", 80);
    dt.Rows.Add(1, "Alvin", "4", 120);
    dt.Rows.Add(2, "Robin", "1", 120);
    dt.Rows.Add(2, "Robin", "2", 100);
    dt.Rows.Add(2, "Robin", "3", 90);
    dt.Rows.Add(2, "Robin", "4", 110);
    dt.Rows.Add(3, "Jim", "1", 80);
    dt.Rows.Add(3, "Jim", "2", 90);
    dt.Rows.Add(3, "Jim", "3", 130);
    dt.Rows.Add(3, "Jim", "4", 135);
 
    return dt;
 
  }
}
 
运行结果如下






 

Feedback

#1楼   回复  引用  查看    

2006-08-27 18:54 by aspnetx      
请问这个不支持themes吗?

#2楼[楼主]   回复  引用  查看    

2006-08-27 19:24 by Alvin Ye      
这里不需要支持 theme 因为他只是一个图片

你可以新建一个 aspx 页
当然在这个页可以用 theme
<!-- 这里引用图表, -->
<img src="default2.aspx" alt="Sales By Region" />

#3楼   回复  引用    

2007-04-03 13:59 by mikk[未注册用户]
我在VS2003中加theme属性时提示错误:page 不支持theme属性?!不加这个却显示乱码,如何解决呢?

#4楼   回复  引用    

2007-04-03 21:46 by Alvin Ye[未注册用户]
你好 目前我没有在 2003 上测试过,
其实是这样的.

因为这个页是一个图片的二进制文件.
你要做的就是保证这个二进制文件是完整,并干净的.
不能有任何的文件头..或是尾

#5楼   回复  引用    

2007-04-27 17:39 by emen[未注册用户]

出现下面这个错误是什么问题 ?


c:\Inetpub\wwwroot\MyLearnTest\ZedGraph\Default2.aspx.cs(41,46): error CS0123: “OnRenderGraph”的重载均与委托“ZedGraph.Web.ZedGraphWebControlEventHandler”不匹配
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\mylearntest\b4be44f7\dbbd5042\assembly\dl3\be3f8772\00086996_7776c701\ZedGraph.Web.DLL: (与前一个错误相关的符号位置)
c:\Inetpub\wwwroot\MyLearnTest\ZedGraph\Default2.aspx.cs(52,22): (与前一个错误相关的符号位置)

#6楼   回复  引用    

2007-06-18 16:32 by xsh[未注册用户]
我按你写的使用,可出来的还是乱码。

#7楼[楼主]   回复  引用  查看    

2007-06-18 17:26 by Alvin Ye 叶冬开      
出现乱码的原因很明显,

就是在这个页中已经插入了其它的代码. 比如上面提到的 theme , master
或是其它的插件.

你可以试着建一个空的项目然后再试

#8楼   回复  引用  查看    

2007-09-23 00:08 by music000      
@emen
OnRenderGraph 方法少了一个参数:
private void OnRenderGraphT(ZedGraphWeb zgw, System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)

博主的只有:
private void OnRenderGraphT(System.Drawing.Graphics g, ZedGraph.MasterPane masterPane)

是版本的原因吗?



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 487524




相关文章:

相关链接:

posts - 13, comments - 9, trackbacks - 0, articles - 1

Copyright © Alvin Ye 叶冬开