使用OpenFlashChart 2.0结合asp.net后台代码生成曲线图

一、OpenFlashChart下载

      http://teethgrinder.co.uk/open-flash-chart/download.php

二、在项目中添加OpenFlashChart.dll的引用
      引用的时候还需要在控件栏里添加对OpenFlashChart.dll控件的引用。引用后就可以直接拖放到页面上了。

      应用到正式IIS环境中时还需要添加对C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll的映射,
      映射扩展名为.ofc,且不要选中“检查文件是否存在”复选框

      在Web.Config中的节点 <httpHandlers>添加
  <httpHandlers>
          <add verb="*" path="ofc_handler.ofc" type="OpenFlashChart.WebHandler.ofcHandler, OpenFlashChart"/>
  </httpHandlers>

三、示例代码

 

这是Flash图表控件,支持线图及柱形图、饼图。

应用到正式IIS环境中时还需要添加对C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll的映射,
 映射扩展名为.ofc,且不要选中“检查文件是否存在”复选框

以下是部份使用的源代码仅供参考:(曲线图示例)
下面代码需要 Imports OpenFlashChart

    Public Sub CrTime()
        Dim TbName As String = "CPC_" + ClongDate(SD.Text) + "_IPstat"
        Dim CmdText As String = "Select Hs,Sum(IPs) as IPs,Sum(PVs) as PVs,Sum(Clicks) as clicks,Sum(S3s) as S3s from " + TbName + " where WebSiteID=" + WebSiteID.Text + " Group by Hs Order by Hs"
        Dim Dt As New DataTable
        Try
            Dt = CmdText.ExecuteDataTable
        Catch ex As Exception
            ClientMsg("查询发生错误外错,可能数据不存在或查询超时:" + ex.Message)
            History()
        End Try

        Dim IPsValue As New ArrayList
        Dim PVsValue As New ArrayList
        Dim ClicksValue As New ArrayList
        Dim S3sValue As New ArrayList
        Dim X As New XAxis
        Dim MaxPV As Double = 0
        If Dt.Rows.Count > 0 Then
            Dim m As Integer
            For m = 0 To Dt.Rows.Count - 1
                IPsValue.Add(Dt.Rows(m)("IPs"))
                PVsValue.Add(Dt.Rows(m)("PVs"))
                ClicksValue.Add(Dt.Rows(m)("Clicks"))
                S3sValue.Add(Dt.Rows(m)("S3s") * 100)
                X.Labels.Add(New AxisLabel(Dt.Rows(m)("hs")))
                If Dt.Rows(m)("PVs") > MaxPV Then
                    MaxPV = Dt.Rows(m)("PVs")
                End If
            Next
        End If
        Dim Chart As New OpenFlashChart.OpenFlashChart
        Dim Lines(3) As Line
        For m = 0 To Lines.Length - 1
            Lines(m) = New Line
            Lines(m).HaloSize = 0
            Lines(m).Width = 2
            Lines(m).DotSize = 5
            Select Case m
                Case 0
                    Lines(m).Values = PVsValue
                    Lines(m).Text = "PV"
                    Lines(m).Tooltip = "PV:#val#"
                    Lines(m).Colour = "#A942B8" '紫色
                Case 1
                    Lines(m).Values = IPsValue
                    Lines(m).Text = "IP"
                    Lines(m).Tooltip = "IP:#val#"
                    Lines(m).Colour = "#F30219" '红色
                Case 2
                    Lines(m).Values = ClicksValue
                    Lines(m).Text = "点击"
                    Lines(m).Tooltip = "点击:#val#"
                    Lines(m).Colour = "#46F302" '绿色
                Case 3
                    Lines(m).Values = S3sValue
                    Lines(m).Text = "关键效果"
                    Lines(m).Tooltip = "关键效果:#val#"
                    Lines(m).Colour = "#255A10" '青色
            End Select
            Chart.AddElement(Lines(m))
        Next

        Dim WebInfo As New DataTable
        WebInfo = ("Select * from WaUser_WebSites Where ID=" + WebSiteID.Text).ExecuteDataTable
        Dim title As String = ""
        If WebInfo.Rows.Count = 1 Then
            title = String.Format("合作方ID:{0} 网站 {1}({2}) 分时访问数据", WebInfo.Rows(0)("UserID").ToString, WebInfo.Rows(0)("Domain").ToString, WebInfo.Rows(0)("ID").ToString)
        Else
            title = "无法获取网站信息!"
        End If

        Chart.Title = New Title(title) '设置报表标题
        Chart.Y_Axis.SetRange(0, MaxPV, CInt(MaxPV / 6)) '设置Y轴的最高值,及每格的间隔值
        Chart.Tooltip = New ToolTip("全局提示:#val#")
        Chart.Tooltip.Shadow = True
        Chart.Tooltip.Colour = "#000000"
        Chart.Tooltip.MouseStyle = ToolTipStyle.CLOSEST
        Chart.Bgcolor = "#FFFFFF"
        Chart.X_Axis = X '这个是定义黄向座标的列。

        OFC1.EnableCache = False
        OFC1.Chart = Chart
    End Sub

 

代码请自已研究。Line是曲线图的线程

posted @   soleds  阅读(2071)  评论(4编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示