程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅-高性能ASP.NET樹狀列表控件(下)(5)

C#發現之旅-高性能ASP.NET樹狀列表控件(下)(5)

編輯:關於C語言

這段代碼過程也不復雜,首先獲得名為KeyType和KeyValue的頁面參數。然後在頁面輸出流上創建一個XML文檔書寫器,然後連接數據庫准備查詢數據。

若參數KeyType的值等於“customerid”,則表示KeyValue為一個客戶編號,此時頁面是要求輸出輸出該編號客戶名下的所有的訂單信息,此時代碼連接數據庫查詢查詢Orders數據表,對每一個查詢記錄輸出一個名為Node的XML元素,使用Guid.NewGuid()創建一個不重復的節點編號,輸出節點圖標,文本信息。此外還輸出XMLSource信息。這裡的XMLSource信息表示訂單節點的子節點信息來源,也就是指定訂單的貨品信息XML文檔地址,這裡還是指向頁面TreeVIEwNodeXML.ASPx,使用的KeyType參數值為orderdetails,而 KeyValue 參數值就是訂單編號。

若頁面參數KeyType的值等於orderdetails,則KeyValue為一個訂單編號,此時頁面被要求輸指定編號的訂單中的詳細貨物清單,此時程序執行一個簡單的聯合查詢,獲得指定訂單編號的所有貨品信息,然後輸出XML文檔。由於貨品信息沒有子節點,因此也就不輸出XMLSource 元素了。

其他文件

這個樹狀列表控件還包含了一些其他文件,比如SkyTreeVIEwControl.bmp是控件在VS.Net窗體設計器工具箱上顯示的小圖標。而其他的以 SkyTreeVIEwControl_開頭的圖片文件用於模擬顯示樹狀列表的層次結構,還有一些默認圖標文件。

其他說明

讀者可以試著運行演示頁面Default.ASPx,可以發現對樹狀控件進行不同的設置,生成的HTML頁面大小是不相同的。比如筆者設置左邊的列表的GenerateAtServer屬性為false,IndentXML為false時,也就是啟動客戶端生成HTML代碼,則生成的客戶端加載的 HTML頁面大小為三百多K,查看其HTML源代碼,發現樹狀列表的節點XML文檔占據著HTML文檔的大部分。若筆者設置左邊的列表的 GenerateAtServer屬性為true,也就是在服務器端生成HTML代碼,則客戶端顯示的HTML頁面大小接近2兆。體積瞬間增長到6倍,也就是說當樹狀列表節點比較多時(這裡有三千多個),則在服務器端生成代碼和在客戶端生成代碼這兩種模式存在很大的差別。這是因為當在客戶端生成代碼時,服務器端向客戶端發送的是XML文檔,只包含比較純粹的數據,體積小;而在服務器端生成代碼時,服務器端發送的是HTML代碼,除了包含數據外,還有大量的用於控制界面樣式的HTML代碼,這導致Html代碼量大。

在以前的XML/XSLT章節中,筆者提過,在web開發中采用XML/XSLT技術能比較大的改善WEB程序的網絡傳輸性能,在這裡用於顯示大量節點的樹狀列表的應用就是一個范例。

部署控件

這個樹狀列表控件開發完畢後包含在一個DLL文件中,編譯程序前要注意設置文件“SkyTreeViewControl.bmp”和“SkyTreeVIEwControl.xslt”的“生成操作”屬性值為“嵌入的資源”。

開發人員在開發其他系統時可以添加這個DLL的引用,在VS.Net的窗體設計器的工具箱上可以看到這個樹狀列表的圖標,若沒有則在工具箱上右擊顯示快捷菜單,選中“添加/移除項目”,在對話框中選擇浏覽,顯示包含控件的DLL 文件,然後選擇SkyTreeVIEwControl即可。

開發人員從工具箱中拖拽一個樹狀列表控件到ASP.Net頁面上就可以開始使用了。

在開發和部署包含樹狀列表的WEB 程序前,需要將所有“SkyTreeVIEwControl_”前綴的圖片文件拷貝到程序第一級目錄下。

小結

在本章中,大家一起研究了目前一些ASP.Net項目中使用的樹狀列表的原理和出現的問題,並開發新的樹狀列表控件。這種WEB樹狀列表控件支持在客戶端和服務器端使用XSLT技術生成Html代碼,並能在客戶端動態加載子列表,相對於舊控件,新控件加載速度快,能顯示大量的節點。

此外讀者還學習了IE浏覽器所特有的XML數據島的功能,並使用Javascript腳本在客戶端執行XSLT轉換。這裡讀者可以看到XSLT技術作為國際標准技術已經得到廣泛的支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved