利用XML實現通用WEB報表列印(實現篇)

2022-02-19 08:46:40 字數 1526 閱讀 9404

相信很多人都看過盧彥的那篇 利用xml實現通用web報表列印(實現篇) 的文章,方法很不錯。但很難使用,原因就是他的方法實際上是使用了 windows form 控制項。

winform控制項確實是個好東西,它可以讓ie在客戶端的功能大大的增強,但是許多人用的都不多。原因是什麼?安全問題。

.net framework提供了比activex控制項強大得多的安全模型。這裡我不準備多說.net安全方面的知識,.net framework sdk 文件中有詳細的解釋。在這裡還是以乙個例子描述。

現在開啟vs.net 2003,新建乙個windows控制項庫專案,專案名稱是namespace.client ,然後把自動生成的類名稱改為testform。在設計檢視中從工具箱拽乙個button控制項放在控制項窗體上。

從解決方案資源管理器中的專案中新建乙個windows窗體,窗體名稱隨便,這裡是popform,在這個窗體中新增乙個按鈕,在按鈕的單擊事件中新增一句**:

this

.close();

然後返回testform控制項設計介面,在新增的窗體按鈕上雙擊,專項**檢視。在類宣告的下方私有成員定義中新增一句:

private

popform pform 

=null

;然後在按鈕單擊事件定義中寫如下**,假設按鈕id為btnopen:

private

void

btnopen_click(

object

sender, system.eventargs e)

else

pform.showdialog();

} 上面的**很簡單,就是新建乙個winform控制項,在控制項中新增乙個按鈕,這個按鈕開啟乙個名叫popform的窗體,popform窗體中有個按鈕,負責關閉。

編譯以後,生成乙個名為:namespace.client.dll的.net程式集。

現在把這個程式集加入到asp.net頁面中,**如下:

<

object 

classid

=""viewastext

>

object

>

上面的**就是宣告的含義就是:此程式集需要.net安全設定中定義的預設許可權,且不會超過這個預設許可權。

客戶端.net執行庫在執行這個控制項的**時,會檢測到這個宣告,就會把internet_zone區的許可權賦予這個控制項。這樣,空間就顯示出來了。

但是,這種辦法有缺陷,就是只能使用.net預設設定的許可權。客戶端無法訪問檔案,無法訪問登錄檔,連資料庫都無法訪問。除了顯示視窗外什麼都不能幹。而且顯示的視窗有這樣的警告。

表示這個視窗所能執行的**是受到限制的。

這個辦法實際上很好,因為winform控制項主要的目的就是在客戶端顯示視窗,最重要的就是訪問印表機。如果沒有什麼特殊的用途,則這個方法可以在網際網路的公用**上使用,可以給大家用,只要大家的客戶端安裝了.net執行庫。

但是如果要在客戶端執行高階操作,需要更多的許可權,如訪問登錄檔,訪問資料庫,執行網路操作等。這個方法就不適用了,因為它已經越過了.net的預設設定,必須用其他的辦法來越過.net的預設安全設定。

利用XML實現通用WEB報表列印

利用xml實現通用web報表列印 盧彥 方案適用性 1.遠端資料列印。需要列印的資料並不在本地,必須進行遠端讀取。2.需要精確控制列印效果,包括頁面格式,分頁,附加條目,等。3.出於安全性考慮,不能直接連線到資料庫。方案原理 其實原理很簡單,通過xml強大的自定義功能,我們便能方便的自定義出我們所有...

利用XML實現通用WEB報表列印

專欄作品 利用xml實現通用web報表列印 盧彥 方案適用性 1.遠端資料列印。需要列印的資料並不在本地,必須進行遠端讀取。2.需要精確控制列印效果,包括頁面格式,分頁,附加條目,等。3.出於安全性考慮,不能直接連線到資料庫。方案原理 其實原理很簡單,通過xml強大的自定義功能,我們便能方便的自定義...

利用XML實現通用WEB報表列印

盧彥 方案適用性 1.遠端資料列印。需要列印的資料並不在本地,必須進行遠端讀取。2.需要精確控制列印效果,包括頁面格式,分頁,附加條目,等。3.出於安全性考慮,不能直接連線到資料庫。方案原理 其實原理很簡單,通過xml強大的自定義功能,我們便能方便的自定義出我們所有需要的格式控制標籤,在伺服器端進行...