Highcharts .NET 是我们基于 .NET 平台封装的 Highcharts,可以很方便的在 .NET 开发环境中使用 Highcharts 创建交互性图表。

开发环境

Highcharts.Net 的运行需要以下两个 framework:

  • ASP.NET 4.x +
  • ASP.NET MVC 4 + 或 ASP.NET Web Forms 4 +

    下载或安装依赖包

Highcharts .NET 相关的 DLL 文件有两种方法获取:

1、下载获得

下载地址:Highcharts_ASPNET_MVC.zip

下载后解压然后在项目中通过 References 的形式添加相应的 DLL 文件,详细过程是:

创建一个新的 ASP.NET Web 应用程序项目(.NET Framework,选择 MVC 或 Web Forms 模板),然后在项目中的 “References” 菜单中右键,点击 “Add Reference…” 选项来添加依赖。

Highcharts .NET 使用教程 - 图1

接下来进入到解压后的 Highcharts for ASP.NET MVC 所在的目录,然后将 Highcharts.Web.Mvc.dll 这个文件添加到项目中。

Highcharts .NET 使用教程 - 图2

2、通过 NuGet 安装

创建项目(同方法1),然后在项目的 “References” 项目右键,选择 “Manage NuGet Packages” 菜单。

Highcharts .NET 使用教程 - 图3

通过搜索 “Highsoft.Higcharts” 或 “Highsoft.Highstock” 来获取对应的包,然后点击并安装对应的包即可。

Highcharts .NET 使用教程 - 图4

安装完毕后,Highcharts.Web.Mvc 文件就会在项目的 references 中,如下图所示

Highcharts .NET 使用教程 - 图5

3、其他 IDE

如果你使用的 IDE 不是 Visual Studio .NET,请参考上面的方法,在 IDE 中找到 References 菜单并添加 Highcharts.Web.Mvc.dll ,或者直接将这个文件复制到项目的 /bin 目录中。

试用和正式版本

我们提供 30 天试用版本,试用版和正式版功能是完全一样的,唯一的试用版超过 30 天将不能继续使用,这时候需要授权码来继续试用,添加授权码的方式是在 Web.config 文件 appSettings 里添加key 为 Highcharts,值为授权码的配置,例如

  1. <add key="Highcharts" value="您的授权码"/>

更多详情请 联系我们 或直接访问 在线商店

MVC 示例

点击下载 项目源码

1、给视图添加引用

第一步是在示例页面视图的顶部添加依赖,代码如下:

  1. @using Highsoft.Web.Mvc.Charts

Highcharts .NET 使用教程 - 图6

2、添加 JS 文件

通过下面的代码引入 highcharts.js

  1. <script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>

在 Highcharts 中某些图表需要依赖额外的文件,这些文件的引用请参考:文件下载与使用

Highcharts .NET 使用教程 - 图7

3、在视图中定义图表

图表定义可以在 HTML 中的任意位置,这取决于您的代码布局,下面是定义图表的示例代码:

  1. @(Html.Highsoft().Highcharts(
  2. new Highcharts {
  3. Chart = new Chart {
  4. Width = 1087,
  5. Height = 400,
  6. Type = ChartType.Area
  7. },
  8. // 其他配置...,
  9. },
  10. "chart")

Highcharts .NET 使用教程 - 图8

其中 Html.Highsoft().Highcharts 为 Highcharts 初始化方法,传递两个参数,第一个是 Highcharts 配置,第二个参数为 div 的 ID。更多关于 Highcharts 配置选项请参考 API 文档

4、添加数据

1、定义数据列

首先需要在 Highcharts 对象下的 Series 里定义数据列配置,示例代码如下:

  1. @(Html.Highsoft().Highcharts(
  2. new Highcharts
  3. {
  4. Chart = new Chart
  5. {
  6. Width = 1087,
  7. Height = 400,
  8. Type = ChartType.Area
  9. },
  10. // …
  11. Series = new List<Series>
  12. {
  13. new AreaSeries
  14. {
  15. Name = "USA",
  16. Data = @ViewData["usaData"] as List<AreaSeriesData>
  17. },
  18. new AreaSeries
  19. {
  20. Name = "USSR/Russia",
  21. Data = @ViewData["russiaData"] as List<AreaSeriesData>
  22. }
  23. }
  24. }
  25. , "chart")

其中数据列里的数据一般是来自于 Controller,即使用 ASP.NET MVC 的 ViewData 机制(当然也可以使用 ViewBag 或指定在视图里定义数据)。

2、定义数据

定义数据的方式有两种,一种是从 Controller 传递数据到视图(最常用),另外一种是直接在视图中定义。

示例:在 Controller 中定义数据并返回给视图

  1. public ActionResult AreaBasic()
  2. {
  3. // 这里用静态数据,一般是做数据库查询
  4. List<double?> usaValues = new List<double?> {
  5. null, null, null, null, null, 6, 11, 32, 110, 235, 369, 640,
  6. 1005, 1436, 2063, 3057, 4618, 6444, 9822, 15468, 20434, 24126,
  7. 27387, 29459, 31056, 31982, 32040, 31233, 29224, 27342, 26662,
  8. 26956, 27912, 28999, 28965, 27826, 25579, 25722, 24826, 24605,
  9. 24304, 23464, 23708, 24099, 24357, 24237, 24401, 24344, 23586,
  10. 22380, 21004, 17287, 14747, 13076, 12555, 12144, 11009, 10950,
  11. 10871, 10824, 10577, 10527, 10475, 10421, 10358, 10295, 10104 };
  12. List<double?> russiaValues = new List<double?> {
  13. null, null, null, null, null, null, null, null, null, null,
  14. 5, 25, 50, 120, 150, 200, 426, 660, 869, 1060, 1605, 2471, 3322,
  15. 4238, 5221, 6129, 7089, 8339, 9399, 10538, 11643, 13092, 14478,
  16. 15915, 17385, 19055, 21205, 23044, 25393, 27935, 30062, 32049,
  17. 33952, 35804, 37431, 39197, 45000, 43000, 41000, 39000, 37000,
  18. 35000, 33000, 31000, 29000, 27000, 25000, 24000, 23000, 22000,
  19. 21000, 20000, 19000, 18000, 18000, 17000, 16000 };
  20. // 这个示例使用面积图,所以用 AreaSeriesData,其他类型的图表用对应的 SeriesData 即可
  21. List<AreaSeriesData> usaData = new List<AreaSeriesData>();
  22. List<AreaSeriesData> russiaData = new List<AreaSeriesData>();
  23. usaValues.ForEach(p => usaData.Add(new AreaSeriesData { Y = p }));
  24. russiaValues.ForEach(p => russiaData.Add(new AreaSeriesData { Y = p }));
  25. // 通过 ViewData 设置值,在视图中对应的用 @ViewData["usaData"] 来取值
  26. ViewData["usaData"] = usaData;
  27. ViewData["russiaData"] = russiaData;
  28. return View();
  29. }

Highcharts .NET 使用教程 - 图9

示例:直接在视图中定义数据

  1. @(Html.Highsoft().Highcharts(
  2. new Highcharts
  3. {
  4. Chart = new Chart
  5. {
  6. Width = 1087,
  7. Height = 400,
  8. Type = ChartType.Column
  9. },
  10. Series = new List<Series>
  11. {
  12. new ColumnSeries
  13. {
  14. Name = "Brands",
  15. ColorByPoint = true,
  16. // 直接在视图中定义数据
  17. Data = new List<ColumnSeriesData>
  18. {
  19. new ColumnSeriesData { Name = "Microsoft Internet Explorer", Y = 56.3, Drilldown = "Microsoft Internet Explorer" },
  20. new ColumnSeriesData { Name = "Chrome", Y = 24.03, Drilldown = "Chrome" },
  21. new ColumnSeriesData { Name = "Firefox", Y = 10.3, Drilldown = "Firefox" },
  22. new ColumnSeriesData { Name = "Sfari", Y = 4.77, Drilldown = "Safari" },
  23. new ColumnSeriesData { Name = "Opera", Y = 0.91, Drilldown = "Opera" },
  24. new ColumnSeriesData { Name = "Proprietary or Undetectable", Y = 0.2, Drilldown = null }
  25. }
  26. }
  27. },
  28. //
  29. }, "chart")

Highcharts .NET 使用教程 - 图10

Web Forms 示例

点击下载 项目源码

1、创建 Controller

在 Controls 目录下创建一个新的 Controller

Highcharts .NET 使用教程 - 图11

选择 Web Forms User Control 并命名为 HighchartsControl.ascx

Highcharts .NET 使用教程 - 图12

2、创建并渲染图表

打开 HighchartsControl.ascx.cs ,开始编写代码,步骤如下:

Highcharts .NET 使用教程 - 图13

1)添加 using Highsoft.Web.Mvc.Charts;.

  1. using Highsoft.Web.Mvc.Charts;

2)在 Page_Load 方法里创建图表对象

  1. public partial class HighchartsControl : System.Web.UI.UserControl
  2. {
  3. protected void Page_Load(object sender, EventArgs e)
  4. {
  5. //…
  6. Highcharts higcharts = new Highcharts
  7. {
  8. Title = new Title
  9. {
  10. Text = "Monthly Average Temperature",
  11. X = -20
  12. },
  13. Subtitle = new Subtitle
  14. {
  15. Text = "Source: WorldClimate.com",
  16. X = -20
  17. },
  18. XAxis = new List
  19. {
  20. new XAxis
  21. {
  22. Categories = new List { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  23. "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" },
  24. }
  25. },
  26. YAxis = new List
  27. {
  28. new YAxis
  29. {
  30. Title = new YAxisTitle
  31. {
  32. Text = "Temperature (°C)"
  33. },
  34. PlotLines = new List
  35. {
  36. new YAxisPlotLines
  37. {
  38. Value = 0,
  39. Width = 1,
  40. Color = "#808080"
  41. }
  42. }
  43. }
  44. },
  45. Tooltip = new Tooltip
  46. {
  47. ValueSuffix = "°C"
  48. },
  49. Legend = new Legend
  50. {
  51. Layout = LegendLayout.Vertical,
  52. Align = LegendAlign.Right,
  53. VerticalAlign = LegendVerticalAlign.Middle,
  54. BorderWidth = 0
  55. },
  56. Series = new List
  57. {
  58. new LineSeries
  59. {
  60. Name = "Tokyo",
  61. Data = tokyoData as List
  62. },
  63. new LineSeries
  64. {
  65. Name = "NY",
  66. Data = nyData as List
  67. },
  68. new LineSeries
  69. {
  70. Name = "Berlin",
  71. Data = berlinData as List
  72. },
  73. new LineSeries
  74. {
  75. Name = "London",
  76. Data = londonData as List
  77. }
  78. }
  79. };
  80. //…
  81. }
  82. }

3)使用 HighsoftNamespace 将图表对象渲染到页面

The chart‘s HTML code needs to be received, that is why you need to add a HighsoftNamespace. To do so, scroll down to the end of the method, then add HighsoftNamespace.

  1. HighsoftNamespace Highsoft = new HighsoftNamespace();
  2. //string result = Highsoft.Highcharts(higcharts, "chart").ToHtmlString(); //For version 5.0.6326 or older
  3. string result = Highsoft.GetHighcharts(higcharts, "chart").ToHtmlString(); //For version 5.0.6327 or newer

4)将结果写入到 html

  1. Response.Write(result);

3、将 Controller 添加在网页中

打开示例中的 Default.aspx,并按照下面的步骤进行操作:

Highcharts .NET 使用教程 - 图14

1)注册 HighchartsControl

  1. <%@ Register TagPrefix="hc" TagName="Chart" Src="~/Controls/HighchartsControl.ascx" %>

2)引入依赖的 JavaScript 文件

  1. <script src="http://code.highcharts.com/highcharts.js"></script>
  2. <script src="https://code.highcharts.com/modules/exporting.js"></script>

3)使用 HighchartControl

  1. <hc:Chart runat="server"></hc:Chart>

原文: https://www.hcharts.cn/docs/dotnet