當前位置:編程學習大全網 - 源碼下載 - ASP中實時表格的實現。網

ASP中實時表格的實現。網

在分析比較大量數據時,最常用、最直觀的表達方法就是繪制趨勢圖。壹般來說,我們用EXCEL做各種類型的趨勢圖,但都是基於靜態數據,即數據是預先安排好的,而不是動態生成的。如果在互聯網上發布,繪制的圖表只能發布為靜態的GIF圖片,無法從根本上滿足不同用戶對不同數據的需求。

ASP擅長Web編程,在服務器端操作後臺數據庫,但是用ASP制作實時數據庫圖表有點困難,因為ASP本身不支持圖表功能,只能借助第三方控件開發,比如微軟推出的VB和NET Framework的MSChart控件,很好的解決了這個問題。微軟在. NET平臺上集成了實時數據庫圖表制作組件O。WC(Microsoft Office Web Components)我們可以通過在ASP NET頁面中調用OWC來輕松繪制各種類型的實時圖表。OWC支持近種圖表,包括圖形,折線圖,柱形圖,面積圖和k線圖。與MSChart相比,OWC功能強大且易於操作。另外,由於OWC是基於服務器端的,而MSChart只能應用於客戶端,所以MSChart在服務器端的web開發上不如OWC。

下面,作者將通過壹個例子來闡述OWC在ASP網頁中的應用。本實例是作者開發的“化纖產品及其原料市場分析系統”項目的壹個子系統。作者在這個項目中使用了OWC,充分享受了OWC強大的功能給開發工作帶來的便利。

有三層的東西

系統整體架構采用B/S三層結構模式,將系統分為用戶界面層(也稱表示層)、業務邏輯層(也稱功能層)和數據庫服務層(也稱數據層),開發平臺采用. NET框架,有效降低了系統對客戶端的要求,避免了在客戶端分發應用和版本控制的困難。

●用戶界面層使用ASP . NET技術,ASP . NET技術的應用增強了系統的通用性。客戶端只需安裝IE或Netscape等任何瀏覽器,無需加載任何組件。

●業務邏輯層采用. NET框架調用OWC的技術,可以根據用戶的要求快速獲取數據庫中的數據,並動態生成圖表。該系統能夠支持復雜的檢索條件,檢索速度快,響應時間短。

●數據庫服務層數據庫服務層可以使用任何關系數據庫。在本項目中,作者使用了SQL Server,它可以與. NET框架無縫集成,數據庫訪問技術采用ADO NET。

下面我們將重點介紹業務邏輯層的實現。

圖表元素介紹

壹個完整的圖表是由幾個元素組成的,我們必須對它們有所了解,才能完全自由地隨意控制圖表,更好地理解這個程序。作者制作了壹個簡單的圖表,其中標出了程序中涉及的主要部分和元素的名稱,以幫助讀者掌握OWC和理解本文引用的代碼。

使用OWC組件

本節涉及的源代碼摘自化纖產品及其原料市場分析系統。本系統在windows/XP簡體中文專業版網絡環境下使用OWC組件的步驟如下。

在當前目錄下創建壹個新的子目錄圖表用於存儲圖表文件,同時賦予ASP NET帳戶修改目錄的權限。具體步驟如下:右鍵單擊圖表目錄名稱,選擇properties菜單項,在彈出的圖表屬性對話框中點擊security選項卡,點擊Add按鈕找到ASP . NET賬號,然後點擊OK結束,這樣ASP . NET就可以在圖表目錄中寫入圖表文件了。

定義服務器端圖像圖像控件。圖像的屬性imageURL會在程序的最後指向動態生成的圖表文件,所以這裏不需要給它賦值。

& ltASP image id = img chart Width = Height = Visible = False Runat = server & gt;& lt/ASP image & gt;

添加OWC參考

在使用OWC之前,必須將OWC的引用添加到解決方案資源管理器中。具體步驟如下:打開解決方案資源管理器面板,右鍵單擊引用選擇和添加引用菜單,在彈出的添加引用對話框中點擊卡片找到Microsoft Office Web Components,點擊選擇並確定按鈕,將OWC添加到引用中。

定義OWC空間,並向該空間添加壹個奧查OWC圖表。

Dim owcChartSpace As OWC圖表空間=新OWC圖表空間()

dim owcChart As OWC WC chart = owcChartSpace圖表添加

使用SQL檢索條件檢索數據庫,並將檢索結果以記錄集數據集的形式分配給owcChart。

OWC只支持記錄集數據集,不支持數據集數據集,所以sqlCommand sqlDataAdapter等對象不能用於檢索,只能使用記錄集對象進行檢索。

開放式連接

ConnADO打開(connectionString)

RecordsetADO active connection = ConnADO

將光標設置為靜態光標。

recordset ado CursorType = ADODB CursorType enum adOpenStatic

recordset ado cursor location = ADODB cursor location enum adUseClient

標準的SQL檢索條件存儲在變量strSQL中。

打開記錄集(strSQL)

然後將記錄集數據集賦給OWC對象。

owcChartSpace data source = recordset ado

本例中,我們假設SQL語句檢索到的數據* * *有三個字段,這三個字段的值分別對應圖表中曲線分類(X)軸和數值(Y)軸的數據。

確定曲線類型,並確定區分不同曲線的字段名稱。

首先,確定曲線類型為平滑曲線。

owc chart Type = OWC charttypeenum chChartTypeSmoothLine

OWC支持在同壹個圖表中顯示兩條以上的曲線,所以我們必須給出區分不同曲線的依據。這個基礎就是產品場的價值。具體來說,產品字段中的幾個不同值將生成幾條不同的曲線。

Owc圖表集數據(owc圖表維枚舉chdimseriesomes產品)

確定對應於分類(X)軸標簽和值(Y)軸標簽的字段。

首先,我們需要將owcSeries定義為OWC的曲線集,然後遍歷圖表中的每條曲線,將日期字段的值分配給分類(X軸作為X軸校準標簽),並將價格字段的值分配給數值(Y軸作為Y軸校準標簽)。如果能確定圖表中只有壹條曲線,就可以省略遍歷過程,但這無疑會降低程序的通用性。

Dim系列為OWC WC系列

對於owcChart SeriesCollection中的每個owcSeries

Owc系列setdata (owc圖表維枚舉chdimcategories日期)

Owc系列setdata(owc chartdimeonenum chdimvalues價格)

然後

設置坐標軸的屬性。

這部分代碼通過設置文本內容、顏色、大小、主副刻度線及其標簽、主副網線等來美化圖表。如果讀者對這段代碼中的概念有點模糊,可以參考上壹部分提供的圖表。具體設置方法請參考以下代碼。

首先,axis被定義為坐標軸集合。

將軸標註為OWC軸

導線坐標軸集

對於owcChart軸中的每個軸

顯示軸標題

軸HasTitle =真

首先設置分類(X)軸。

如果軸類型=OWC圖表軸類型

chCategoryAxis然後

軸HasTickLabels = True

顯示x軸校準標簽。

軸位置= OWC圖表軸位置

標簽的顯示位置

坐標軸標題字體顏色=藍色

x軸的標題文本顏色

軸標題字體大小=

x軸的標題文本大小

坐標軸標題標題=日期範圍

x軸的標題文本內容

其他

設置數值(y)軸。

坐標軸主要網格線線條顏色=銀色

Y軸上主網絡線條的顏色

軸MajorTickMarks = OWC圖表TickMarkEnum chTickMarkNone

不顯示Y軸的主要刻度線。

軸HasTickLabels = True

顯示y軸校準標簽

坐標軸標題字體顏色=藍色

y軸標題文本顏色

軸標題字體大小=

y軸的標題文本大小

軸標題Caption=價格(千元/噸)

y軸的標題文本內容

如果…就會結束

然後

以GIF圖像格式輸出圖表,並將圖像文件名分配給圖像控件。

用隨機數生成隨機文件名。

隨機化()

Dim nFileNameSuffix為整數

Dim sFileNameSuffix作為字符串

nFileNameSuffix = * Rnd()

sFileNameSuffix =系統轉換成字符串(nFileNameSuffix)

以gif格式輸出圖表,大小為*。圖表的文件名為polyesterprice_ random number GIF,存儲在chart子目錄中。

owcChartSpace export picture(MapPath(chart/polyester price _)+sfilename suffix+gif gif)

將圖像控件的URL指向圖表文件。

img chart ImageUrl = chart/polyester price _+sfilename suffix+gif

通過以上九個步驟,我們完成了壹個實時數據庫圖表的生成和顯示。這裏需要指出的是,以上九個步驟只是生成壹個圖表必不可少的基本流程。通過設置OWC的其他屬性,可以更好、更精確地控制圖表的生成和顯示,如圖例線的粗細、顏色軸刻度線、標簽顯示頻率網線等。這部分我就不介紹了。請參考本文第四部分的源代碼。

請看下面這段代碼生成的圖表效果。

使最優化

以上文章中實時生成的所有圖表文件都存儲在圖表文件夾中,所以這些文件不會因為文件名隨機而相互重疊。但是隨著時間的推移,越來越多的文件不僅占用了硬盤空間,而且阻礙了管理,降低了性能。可以自動刪除程序中之前的圖表文件嗎?答案是肯定的,只要我們把下面這段話放到代碼文件的Page_Load()函數中,代碼程序運行時就會自動刪除當天之前的文件,這樣當天生成的圖表文件就會壹直保存在圖表文件夾中,從而有效避免文件垃圾。

首先獲取圖表文件夾中的文件列表。

Dim fileEntries() As String =系統IO目錄獲取文件(MapPath( chart))

Dim文件作為字符串

遍歷文件列表

對於fileEntries中的每個文件

將文件的生成日期與系統日期進行比較。如果是在那壹天之前生成的文件,請將其刪除。

if DateTime Compare(System IO File getcreation time(sFile)AddDays()DateTime Now)& lt;然後

系統IO文件刪除(sFile)

如果…就會結束

然後

Lishi Xinzhi/Article/program/net/201311/11850

  • 上一篇:在三級系統中,以哪些檢查項屬於主機測評
  • 下一篇:mk盒子修改皮膚後重啟了電腦就壹直藍屏怎麽回事啊?
  • copyright 2024編程學習大全網