OWC绘图控件研究(3)

油耗统计图表
本文介绍了一个使用OWC组件在网页上动态生成油耗统计图表的应用案例。该应用通过ASP.NET结合JavaScript实现了图表的绘制,并能根据用户输入的时间段和车辆信息动态更新图表数据。

1.前台代码: 

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

<!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 runat="server">
    
<title>无标题页</title>

    
<script type="text/javascript" language="javaScript" src="/_layouts/images/include/timein.js"></script>
<script language="javascript">
 
<!--
        
function Ini()
        
{            
            
var chart = document.getElementById("Chart");//new ActiveXObject("OWC11.ChartSpace.11");
            var c = chart.Constants;
            
if(chart == null)
            
{
                alert(
"您没有安装Office!");
            }

            chart.Clear();
            
var m_Chart = chart.Charts.Add(0);
            
//m_Chart.PlotArea.Interior.SetOneColorGradient(c.chGradientVariantStart,c.chGradientVariantStart,0.15, "Silver")
            
            m_Chart.HasLegend 
= true
            
            m_Chart.HasTitle 
= true
            m_Chart.Title.Caption 
= "油耗量统计分析";
            m_Chart.Axes(
0).HasTitle = true;
            m_Chart.Axes(
0).Title.Caption = "月份";
            m_Chart.Axes(
1).HasTitle = true;
            m_Chart.Axes(
1).Title.Caption = "油耗量";

            m_Chart.type
=0;
            
<% for(int i=0 ;i<arr1.Count;i++)
                
{%>
                    
var aCats<%=i%> = <% =arr1[i].ToString()%>;
                    
var aVals<%=i%> = <% =arr2[i].ToString()%>;
                    
var oSer<%=i%>  = m_Chart.SeriesCollection.Add(<% =%>);
                    oSer
<%=i%>.SetData(c.chDimSeriesNames,-1<% =i.ToString() %>);
                    oSer
<%=i%>.SetData(c.chDimCategories,-1,aCats<% =%>);
                    oSer
<%=i%>.SetData(c.chDimValues,-1,aVals<% =%>);
                
<%
           }
%>
                      
            chart.AllowPropertyToolbox 
= true;
            chart.DisplayToolbar
=true;
            
        }

    
-->
</script>

</head>
<body  onload="javascript:Ini()" style="text-align: center">
    
<form id="form1" runat="server">
        
<div style="text-align: center">
            
&nbsp;<table style="width: 874px">
                
<tr>
                    
<td colspan="4">
                    
</td>
                
</tr>
                
<tr>
                    
<td style="text-align: right">
                        
<input style="width: 125px" id="txtSTime" readonly type="text" runat="server" /><img
                            
style="cursor: hand" onclick="fPopUpCalendarDlg(txtSTime,'/_layouts/images/include/timein.htm','yyyy-mm-dd');return false"
                            alt
="弹出日历下拉菜单" src="/_layouts/images/include/datetime.gif" align="middle" />
                    
</td>
                    
<td>
                        ~
</td>
                    
<td style="text-align: left" colspan="2">
                        
<input style="width: 125px" id="txtSTime1" readonly type="text" runat="server" /><img
                            
style="cursor: hand" onclick="fPopUpCalendarDlg(txtSTime1,'/_layouts/images/include/timein.htm','yyyy-mm-dd');return false"
                            alt
="弹出日历下拉菜单" src="/_layouts/images/include/datetime.gif" align="middle" />
                        
<asp:DropDownList ID="DropDownList1" runat="server">
                        
</asp:DropDownList>
                        
<asp:TextBox ID="TextBox1" runat="server" Width="97px"></asp:TextBox>
                        
<asp:Button ID="btnOk" runat="server" Text="确定" OnClick="btnOk_Click" /></td>
                
</tr>
                
<tr>
                    
<td colspan="4" style="height: 339px">
                        
<object id="Chart" name="Chart" codebase="http://www.smnpc.cn/bin/OWC11.DLL#version=11,0,6555,0"
                            classid
="clsid:0002E55D-0000-0000-C000-000000000046" progid="OWC11.ChartSpace.11" width="650px" height="450px">
                        
</object>
                    
</td>
                
</tr>
            
</table>
        
</div>
    
</form>
</body>
</html>

2.后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

using System.Data.SqlClient;
using System.Text;
using Yesidea.DAO;

public partial class web_testowc : System.Web.UI.Page
{
    DbHelperSQL dbhelper 
= new DbHelperSQL(new BaseDAO());
    
protected ArrayList arr1 = new ArrayList();
    
protected ArrayList arr2 = new ArrayList();
    
protected ArrayList arr3 = new ArrayList();
    
public string []driver = new string[2];

    
protected void Page_Load(object sender, EventArgs e)
    
{
        
if (!IsPostBack)
        
{
            Yesidea.BO.CarInfo car 
= new Yesidea.BO.CarInfo();
            DataSet ds 
= car.GetList("");
            
this.DropDownList1.DataSource = ds;
            
this.DropDownList1.DataTextField = "Cnumber";
            
this.DropDownList1.DataValueField = "Cnumber";
            
this.DropDownList1.DataBind();
        }

    }


    
protected void btnOk_Click(object sender, EventArgs e)
    
{
        driver 
= new string[] "王云""测试" };
        
for (int j = 0; j < driver.Length; j++)
        
{
            GetData(
this.txtSTime.Value, this.txtSTime1.Value, this.DropDownList1.SelectedValue, driver[j].ToString());
        }

    }


    
public int MonthStr(DateTime stime, DateTime etime)
    
{
        
int i = (etime.Year - stime.Year) * 12 + (etime.Month - stime.Month);
        
return i;
    }


    
protected DataSet CreateDriverOilDataSet(string stime,string etime, string cnumber, string cdriver)
    
{
        
string cmdtxt = String.Empty;
        
if (stime != "" && etime != "" && cnumber != "" && cdriver != "")
        
{
            cmdtxt 
= "select Cnumber,Cdriver, sum(cfutel) as Futel,datename(year, Etime) as [Year],datename(month, Etime) as [Month] from ViewDriverUOil";
            cmdtxt 
+= " where Etime >'" + stime + "' and Etime <'" + etime + "' and Cdriver = ('" + cdriver + "') and Cnumber = ('" + cnumber + "')";
            cmdtxt 
+= " group by Cdriver,Cnumber,datename(month, Etime),datename(year, Etime)";
            cmdtxt 
+= " order by [Year] asc,[Month] asc";
            
//Response.Write(cmdtxt);
        }

        
else if (stime != "" && etime != "" && cnumber == "" && cdriver != "")
        
{
            cmdtxt 
= "select Cdriver, sum(cfutel) as Futel,datename(year, Etime) as [Year],datename(month, Etime) as [Month] from ViewDriverUOil";
            cmdtxt 
+= " where Etime >'" + stime + "' and Etime <'" + etime + "' and Cdriver = ('" + cdriver + "') ";
            cmdtxt 
+= " group by Cdriver,datename(month, Etime),datename(year, Etime)";
            cmdtxt 
+= " order by [Year] asc,[Month] asc";
        }


        
return dbhelper.Query(cmdtxt);
    }


    
private void GetData(string stime,string etime, string cnumber, string cdriver)
    
{
        StringBuilder a 
= new StringBuilder("[");
        StringBuilder b 
= new StringBuilder("[");
        DataSet ds 
= CreateDriverOilDataSet(stime,etime,cnumber,cdriver);
        ArrayList arylst 
= GetMonth(DateTime.Parse(stime),DateTime.Parse(etime));
        
for (int i = 0; i < arylst.Count; i++)
        
{
            a.Append(
""" + arylst[i].ToString().Replace("-",""+ "",");
            
bool endfor = false;
            
int m = 0;
            
for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
            
{
                
if (arylst[i].ToString() == ds.Tables[0].Rows[j]["Year"].ToString() + "-" + ds.Tables[0].Rows[j]["Month"].ToString())
                
{
                    endfor 
= true;
                    m 
= j;
                }

            }

            
if (endfor)
            
{
                b.Append(
""" + ds.Tables[0].Rows[m]["Futel"].ToString() + "",");
            }

            
else
            
{
                b.Append(
"" 0 ",");
            }

        }

        a.Replace(
",""", a.Length - 11);
        
if (a.Length == 1) a.Append(""无数据"");
        a.Append(
"]");
        b.Replace(
",""", b.Length - 11);
        
if (b.Length == 1) b.Append("0");
        b.Append(
"]");
        arr1.Add(a.ToString());
        arr2.Add(b.ToString());
    }


    
private ArrayList GetMonth(DateTime timeS, DateTime timeE)
    
{
        ArrayList arr 
= new ArrayList();
        
int Count = timeE.Year - timeS.Year;
        
for (DateTime time = timeS; time < timeE; )
        
{
            arr.Add(time.ToString(
"yyyy-MM"));
            time 
= time.AddMonths(1);
        }

        
return arr;
    }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值