amchart图表控件使用

项目中使用到的amchart对应的js文件及datepicker97控件到以下地址下载:

http://download.csdn.net/detail/taomanman/6889253

效果图如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="wsdQuery.aspx.cs" Inherits="WSD_wsdQuery" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>温湿度历史曲线图</title>
    <link href="../css/StyleSheet.css" rel="stylesheet" type="text/css" />
    <script src="../js/amcharts/amcharts.js" type="text/javascript"></script>
    <script src="../js/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
    <script src="../js/jquery-1.4.2.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div class="divtitle">
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td style="text-align: center; letter-spacing: 10px;">
                    <asp:Label ID="lblTitle" runat="server" Text="1#温度曲线"></asp:Label>
                </td>
            </tr>
        </table>
    </div>
    <table border="0" cellpadding="0" cellspacing="0" style="margin-left: 0px; vertical-align: middle;"
        class="tabSearch">
        <tr>
            <td>
                监控点名称
            </td>
            <td>
                <asp:DropDownList ID="ddlSiteNM" runat="server" Style="width: 110px">
                </asp:DropDownList>
            </td>
            <td>
                开始时间
            </td>
            <td>
                <input type="text" id="bTM" runat="server" style="width: 100px" οnfοcus="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'%y-%M-%d'})"
                    class="Wdate" />
            </td>
            <td>
                结束时间
            </td>
            <td>
                <input type="text" id="eTM" runat="server" style="width: 100px" οnfοcus="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'%y-%M-%d'})"
                    class="Wdate" />
            </td>
            <td>
                <asp:Button ID="btnQuery" runat="server" CssClass="btnStyle" Text="查询" OnClick="btnQuery_Click" />
            </td>
        </tr>
    </table>
    <div style="margin: 0px 2px; border: 1px solid #0066FF">
        <div style="width: 99%; text-align: center; padding: 5px; color: Black; font-size: 17px;
            font-weight: bold;">
            <asp:Label ID="lbl_data" runat="server"></asp:Label>
        </div>
        <div style="width: 99%; text-align: center; padding: 5px; color: Black; font-size: 14px;">
            <table width="100%" border="0" cellpadding="0" cellspacing="0">
                <tr>
                    <td style="width: 33%">
                    </td>
                    <td style="width: 34%; text-align: center;">
                        <asp:Label ID="lbl_subtitle" runat="server"></asp:Label>
                    </td>
                    <td style="width: 33%; text-align: right; padding-right: 5px;">
                        <%--  <asp:Label ID="lbl_bz" runat="server" Text="单位(m)"></asp:Label>--%>
                    </td>
                </tr>
            </table>
        </div>
        <div id="container" runat="server" style="height: 500px;">
        </div>
    </div>
    <div id="progressBar" class="progressBar" runat="server">
        数据加载中,请稍等...</div>
    <!--隐藏域赋值开始-->
    <input type="hidden" id="ss" runat="server" value="[]" />
    <input type="hidden" id="ss_max" runat="server" value="[]" />
    <input type="hidden" id="ss_min" runat="server" value="[]" />
    <!--温度最大值-->
    <input type="hidden" id="wd_max" runat="server" value="0" />
    <!--温度最小值-->
    <input type="hidden" id="wd_min" runat="server" value="0" />
    <!--湿度最大值-->
    <input type="hidden" id="sd_max" runat="server" value="0" />
    <!--湿度最小值-->
    <input type="hidden" id="sd_min" runat="server" value="0" />
    <!--Y轴title-->
    <input type="hidden" id="valueAxis_title" runat="server" value="0" />
    <input type="hidden" id="valueAxis_title1" runat="server" value="0" />
    <input type="hidden" id="valueAxis_title2" runat="server" value="0" />
    <input type="hidden" id="color" runat="server" value="0" />
    <input type="hidden" id="color_max" runat="server" value="0" />
    <input type="hidden" id="color_min" runat="server" value="0" />
    <!--显示单位-->
    <input type="hidden" id="DW" runat="server" value="0" />
    <!--隐藏域赋值结束-->
    </form>
</body>
</html>
<script type="text/javascript">
    $(function () {
        //从后台获取拼接的json串,进行eval解析
        var ss = eval("(" + $("#ss").val() + ")");


        AmCharts.ready(function () {
            /*************************************温湿度***********************************/
            chart = new AmCharts.AmSerialChart();
            //chart图上的图片路径
            chart.pathToImages = "../js/amcharts/images/";
            chart.zoomOutButton = {
                backgroundColor: '#000000',
                backgroundAlpha: 0.15
            };


            chart.dataProvider = ss;
            chart.categoryField = "date";
            chart.balloon.bulletSize = 5;
            chart.height = "100%";
            chart.borderAlpha = 0;
            chart.borderColor = "#0066FF";


            chart.addListener("dataUpdated", zoomChart);


            // AXES
            // category
            var categoryAxis = chart.categoryAxis;
            categoryAxis.dashLength = 1;
            categoryAxis.gridAlpha = 0.5; //X轴参考线的透明度
            categoryAxis.position = "bottom"; //X轴标签显示的位置
            categoryAxis.axisColor = "#DADADA";
            categoryAxis.tickLength = 5;
            categoryAxis.axisAlpha = 0.9; //X轴刻度线的透明度
            categoryAxis.axisColor = "#000000";
            categoryAxis.showFirstLabel = false;
            categoryAxis.gridPosition = "start"; //控制参考线显示的位置,start在点或者柱状图前显示,middle在点或者柱状图中间显示
            categoryAxis.labelRotation = 35;


            // value                
            var valueAxis = new AmCharts.ValueAxis();
            valueAxis.title = $("#valueAxis_title").val() + "(" + $("#DW").val() + ")";
            valueAxis.axisAlpha = 1;
            valueAxis.dashLength = 0;
            valueAxis.labelFunction = labelFunction; //控制Y轴显示数据格式
            //            valueAxis.maximum = $("#wd_max").val();
            //            valueAxis.minimum = $("#wd_min").val();
            chart.addValueAxis(valueAxis);




            // GRAPH
            var graph = new AmCharts.AmGraph();
            graph.title = $("#valueAxis_title").val(); //用于在图例上显示的名称
            graph.type = "line";
            graph.lineColor = $("#color").val();
            graph.valueField = "W"; //图表关联数据源中对应的字段值
            graph.balloonText = $("#valueAxis_title").val() + ":[[W]] " + $("#DW").val(); //用于控制图表弹出窗口的信息。
            graph.valueAxis = valueAxis; //图表对应的Y轴
            graph.bullet = "round"; //过程线上点的形状: "none", "round", "square", "triangleUp", "triangleDown", "bubble", "custom"
            graph.bulletAlpha = 1; //过程线上点显示的透明度。
            graph.bulletBorderThickness = 1; //过程线上点边线的宽度。
            graph.bulletOffset = 0.5; //过程线上点显示的透明度。
            graph.bulletSize = 5; //过程线上点大小
            graph.lineThickness = 2;
            $("#ss_min").val() == "" ? graph.negativeBase = $("#ss_max").val() : graph.negativeBase = $("#ss_min").val(); //用户控制参考线的位置
            graph.negativeLineColor = "#ff0000"; //低于参考线的颜色
            graph.connect = false; //当数据为空时不显示
            graph.hideBulletsCount = 500; // this makes the chart to hide bullets when there are more than 50 series in selection
            chart.addGraph(graph);


            if ($("#ss_max").val() != "") {
                var graph1 = new AmCharts.AmGraph();
                graph1.title = $("#valueAxis_title1").val(); //用于在图例上显示的名称
                graph1.type = "line";
                graph1.lineColor = $("#color_max").val();
                graph1.valueField = "max"; //图表关联数据源中对应的字段值
                graph1.balloonText = $("#valueAxis_title1").val() + ":[[max]] " + $("#DW").val(); //用于控制图表弹出窗口的信息。
                graph1.valueAxis = valueAxis; //图表对应的Y轴
                graph1.bullet = "round"; //过程线上点的形状: "none", "round", "square", "triangleUp", "triangleDown", "bubble", "custom"
                graph1.bulletAlpha = 1; //过程线上点显示的透明度。
                graph1.bulletBorderThickness = 1; //过程线上点边线的宽度。
                graph1.bulletOffset = 0.5; //过程线上点显示的透明度。
                graph1.bulletSize = 1; //过程线上点大小
                graph1.lineThickness = 2;
                graph1.hidden = false; //控制过程性显示隐藏
                graph1.connect = false; //当数据为空时不显示
                graph1.hideBulletsCount = 500; // this makes the chart to hide bullets when there are more than 50 series in selection
                chart.addGraph(graph1);
            }


            if ($("#ss_min").val() != "") {
                var graph2 = new AmCharts.AmGraph();
                graph2.title = $("#valueAxis_title2").val(); //用于在图例上显示的名称
                graph2.type = "line";
                graph2.lineColor = $("#color_min").val();
                graph2.valueField = "min"; //图表关联数据源中对应的字段值
                graph2.balloonText = $("#valueAxis_title2").val() + ":[[min]] " + $("#DW").val(); //用于控制图表弹出窗口的信息。
                graph2.valueAxis = valueAxis; //图表对应的Y轴
                graph2.bullet = "round"; //过程线上点的形状: "none", "round", "square", "triangleUp", "triangleDown", "bubble", "custom"
                graph2.bulletAlpha = 1; //过程线上点显示的透明度。
                graph2.bulletBorderThickness = 1; //过程线上点边线的宽度。
                graph2.bulletOffset = 0.5; //过程线上点显示的透明度。
                graph2.bulletSize = 1; //过程线上点大小
                graph2.lineThickness = 2;
                graph2.hidden = false;
                graph2.connect = false; //当数据为空时不显示
                graph2.hideBulletsCount = 500; // this makes the chart to hide bullets when there are more than 50 series in selection
                chart.addGraph(graph2);
            }
            // CURSOR
            chartCursor = new AmCharts.ChartCursor();
            chartCursor.zoomable = true; //是否可以框选放大
            chartCursor.categoryBalloonAlpha = 1; //用于控制鼠标移动时X轴显示文本的透明度
            chartCursor.cursorAlpha = 1; //0不显示参考线,1显示参考线
            chartCursor.valueBalloonsEnabled = true; //控制鼠标移动到图上是否显示弹出框
            chart.addChartCursor(chartCursor);


            // LEGEND
            var legend = new AmCharts.AmLegend();
            legend.valueWidth = 0; //图例上显示数值的宽度。
            legend.position = "bottom";
            legend.valueText = ""; //图例上显示数据的文本,此处为空为了覆盖图上产生的数值。
            chart.addLegend(legend);


            //滚动条设置
            var chartScrollbar = new AmCharts.ChartScrollbar();
            chart.addChartScrollbar(chartScrollbar);




            // 输出显示Chart图
            chart.write("container");
            $("#progressBar").css("display", "none");
            $("#ss").val("[]")
        });


        //当chart图表第一次加载时,监听到dataUpdated事件后被调用
        function zoomChart() {
            //zoom可以使用的函数有:zoomToIndexes, zoomToDates, zoomToCategoryValues
            chart.zoomToIndexes(0, ss.length - 1);
        }
        function labelFunction(a, b, c) {
            var ss = parseFloat(b.replace(',', '')).toFixed(2);
            return ss;
        }
    });
</script>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using USTC;


public partial class WSD_wsdQuery : System.Web.UI.Page
{
    OracleDM odm = new OracleDM();


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //设置过程线的颜色
            this.color.Value = Global.chart_color;
            this.color_max.Value = Global.chart_color_max;
            this.color_min.Value = Global.chart_color_min;
            //初始为2个时间选择框赋值
            this.bTM.Value = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
            this.eTM.Value = DateTime.Now.ToString("yyyy-MM-dd");
            BindDropDownList();
            string ColumnName = this.Request.QueryString["ColumnName"] ?? "WENDU";
            ViewState["ColumnName"] = ColumnName;
            string deviceId = this.ddlSiteNM.SelectedItem.Value.Trim();
            string deviceName = this.ddlSiteNM.SelectedItem.Text.Trim();
            progressBar.Style["display"] = "block";
            SetChartData(deviceId, deviceName, this.bTM.Value, this.eTM.Value, ColumnName);
        }
    }


    /// <summary>
    /// 根据条件生成Chart数据
    /// </summary>
    public void SetChartData(string deviceId, string deviceName, string sDT, string eDT, string ColunmName)
    {
        switch (ColunmName.ToUpper())
        {
            case "WENDU":
                this.valueAxis_title.Value = "温度";
                this.DW.Value = "℃";
                break;
            case "SHIDU":
                this.valueAxis_title.Value = "湿度";
                this.DW.Value = "%";
                break;
            default:
                this.valueAxis_title.Value = "温度";
                this.DW.Value = "℃";
                break;
        }
        StringBuilder sb = new StringBuilder();
        string data = string.Empty;
        string strSQL = "select TM," + ColunmName + " from T_WSD_DATA where TM>=to_date('" + sDT + "','yyyy/MM/dd hh24:mi:ss') and TM<to_date('" + DateTime.Parse(eDT).AddDays(1).ToString("yyyy-MM-dd") + "','yyyy/MM/dd hh24:mi:ss') and DEVICEID='" + deviceId + "' order by tm";
        DataSet ds = odm.getsql(strSQL);
        DataSet ds2 = odm.getsql("select wdmin,wdmax,sdmin,sdmax from t_wsd_attr where deviceid='" + deviceId + "'");
        string attr1 = "";
        string attr2 = "";
        if (ds2.Tables[0].Rows.Count > 0)
        {
            switch (ColunmName.ToUpper())
            {
                case "WENDU":
                    attr1 = ds2.Tables[0].Rows[0]["wdmax"].ToString();
                    attr2 = ds2.Tables[0].Rows[0]["wdmin"].ToString();
                    this.valueAxis_title1.Value = "最大报警阀值";
                    this.valueAxis_title2.Value = "最小报警阀值";
                    break;
                case "SHIDU":
                    attr1 = ds2.Tables[0].Rows[0]["sdmax"].ToString();
                    attr2 = ds2.Tables[0].Rows[0]["sdmin"].ToString();
                    this.valueAxis_title1.Value = "最大报警阀值";
                    this.valueAxis_title2.Value = "最小报警阀值";
                    break;
                default:
                    attr1 = ds2.Tables[0].Rows[0]["wdmax"].ToString();
                    attr2 = ds2.Tables[0].Rows[0]["wdmin"].ToString();
                    this.valueAxis_title1.Value = "最大报警阀值";
                    this.valueAxis_title2.Value = "最小报警阀值";
                    break;
            }
        }
        if (ds.Tables[0].Rows.Count > 0)
        {
            foreach (DataRowView drv in ds.Tables[0].DefaultView)
            {
                sb.Append("{" + "date:\"" + DateTime.Parse(drv["TM"].ToString()).ToString("yyyy/MM/dd HH:mm") + "\""
                    + (drv[ColunmName] != null ? (",W:" + double.Parse(drv[ColunmName].ToString()).ToString("N2").Replace(",", "")) : "")
                    + (attr1 != "" ? (",max:" + attr1) : "")
                    + (attr2 != "" ? (",min:" + attr2) : "")
                    + "},");
            }


            /*********************************温度最值********************************/
            //LINQ取获得数据中的最大值和最小值
            var lists = (from row in ds.Tables[0].AsEnumerable()
                         orderby row.Field<decimal>(ColunmName) descending
                         select row);


            DataRow drv_max = lists.FirstOrDefault();
            DataRow drv_min = lists.LastOrDefault();


            data = sb.ToString().TrimEnd(',');
            data = "[" + data + "]";
            //string max = (double.Parse(drv_max[ColunmName].ToString()) > double.Parse(attr1) ? double.Parse(drv_max[ColunmName].ToString()).ToString() : double.Parse(attr1).ToString());
            //为隐藏域赋值
            this.ss.Value = data;
            //this.wd_max.Value = ((double.Parse(max) * 1.001)).ToString();
        }
        else
        {
            progressBar.Style["display"] = "none";
        }
        this.ss_max.Value = attr1;
        this.ss_min.Value = attr2;
        //标题赋值
        //this.lblTitle.Text = deviceName + "UPS曲线";
        this.lblTitle.Text = this.valueAxis_title.Value + "曲线";
        //为图表主副标题赋值
        this.lbl_data.Text = "[" + deviceName + "]" + "-" + this.valueAxis_title.Value + "曲线图";
        this.lbl_subtitle.Text = "时间自" + DateTime.Parse(sDT).ToString("yyyy年MM月dd日") + "至" + DateTime.Parse(eDT).ToString("yyyy年MM月dd日");
    }


    /// <summary>
    /// 查询按钮事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnQuery_Click(object sender, EventArgs e)
    {
        string bTM = this.bTM.Value.Trim(); //开始时间
        string eTM = this.eTM.Value.Trim(); //结束时间
        string deviceId = this.ddlSiteNM.SelectedItem.Value.Trim(); //设备编码
        string deviceName = this.ddlSiteNM.SelectedItem.Text.Trim(); //设备名称
        SetChartData(deviceId, deviceName, bTM, eTM, ViewState["ColumnName"].ToString());
    }


    /// <summary>
    /// 绑定下拉框数据
    /// </summary>
    public void BindDropDownList()
    {
        string strSQL2 = "select DEVICEID,DEVICENAME from T_DEVICE_LIST where DEVICEID in (SELECT DISTINCT DEVICEID FROM T_WSD_Data)";
        DataSet ds2 = odm.getsql(strSQL2);
        this.ddlSiteNM.DataSource = ds2;
        this.ddlSiteNM.DataTextField = "DEVICENAME";
        this.ddlSiteNM.DataValueField = "DEVICEID";
        this.ddlSiteNM.DataBind();
    }
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AmChart的实例帮助文档 amcharts 要一个“配置文件”(setting.xml),一个数据文件(amile_data.xml), 一个 SWFObject.js,一个对应的 SWF 就可以生成漂亮的统计报表了 1 SWFObject v1.5的对象结构 view plaincopy to clipboardprint? deconcept util getRequestParameter(_2b) // 取得url参数value。_2b是URL的key。 SWFObjectUtil getPlayerVersion() // 取得版本号对象。major.minor.rev。 cleanupSWFs() // 清除页面上所有元素。 SWFObject(_1, id, w, h, _5, c, _7, _8, _9, _a) // _1: swf,指定SWF文件路径。 // _id: id,或者标签的id。 // w: width,属性width。 // h: height,属性height。 // _5: version,flash版本,默认自动会去读取本地的flash插件版本的。 // c: bgcolor,背景色。 // _7: quality,品质(low, high, autolow, autohigh, best ) 。 // _8: xiRedirectUrl // _9: redirectUrl // _a: url参数key useExpressInstall(_d) // 设置xiSWFPath, useExpressInstall属性 setAttribute(_e, _f) // 设置属性attributes。_e是key,_f是value。 getAttribute(_10)http://www.wendangxiazai.com/b-6b9b1bbcf121dd36a32d82c6.html // 取得属性attributes中的值。_10是key。 addParam(_l1, _l2) // 设置参数params。_l1是key,_l2是value。 getParams() // 取得params。 addVariable(_l3, _l4) // 设置变量variables。_13是key,_14是value。 getVariable(_l5) // 取得变量variables中的值。 getVariables() // 取得变量variables。 getVariablePairs() // 取得变量variables的key=value对数组。 getSWFHTML() // 返回flash嵌入的HTML // 例如: // // src="/amchart/amchart/amcolumn/amcolumn.swf" mce_src="amchart/amchart/amcolumn/amcolumn.swf" // width="520" height="380" // style="undefined" mce_style="undefined" // id="amcolumn" name="amcolumn" // bgcolor="#FFFFFF" // quality="high" // flashvars="path=/amchar/amchar/amcolumn/&settings_file=amcolumn_settings.xml&data_file=amcolumn_data.txt&preloader_color=#000000"/> write(_20) // 写入flash插入的位置。_20可以是id的名称或者是一个dom结点。 PlayerVersion(_29) //http://www.wendangxiazai.com/b-6b9b1bbcf121dd36a32d82c6.html 创建版本号对象。 versionIsValid(fv) // 验证flash插件的当前版本号是否兼容fv的版本号(大于等于)。 getQueryParamValue = deconcept.util.getRequestParameter; FlashObject = deconcept.SWFObject; SWFObject = deconcept.SWFObject;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值