程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 在DotNetNuke中利用Reports模塊拼湊數據(一)

在DotNetNuke中利用Reports模塊拼湊數據(一)

編輯:關於ASP.NET

老實說,我非常喜歡“自由度”大的模塊;而且,我更喜歡“數據列表”性的模塊,而不是像Text/HTML模塊一樣,只是一個FCKEditor而已,剩余的東西交給用戶。沒有“歷史數據”、沒有“痕跡”,一旦你做了修改,這些修改就實實在在的替換掉了原來的東西,原來的數據就變得不可查詢了。對於一個網站來說,這並不好,所以Text/HTML只適合做相對來說最簡單的靜態頁面,在某種情況下,和Google Sites有點類似。

Forum模塊,我也不太喜歡,因為使用了太多自己的CSS,而不是Portal統一的;尤其是新版最頂端的幾個圖片,我實在是不喜歡,黑乎乎的。不過,畢竟有一個Forum比自己做一個要好很多,所以,在很多時候,我還是希望直接把Forum放在某個頁面上。

有一個問題就是,如果Forum模塊不是在首頁上,但是用戶卻可能希望在首頁上展示幾條某個論壇的數據,那應該怎麼辦呢?嗯,這個問題其實也好解決,因為Reports模塊可以做得到。

首先,假設我們在系統裡面已經有了一個論壇(不在首頁上,說老實話,把原版的Forum放在首頁上的話……,那就太難看了),我們有一個ForumID為 5的板塊,我們希望的是在首頁上可以顯示這個板塊最新的五條內容,如果我們還要打開Forum模塊再編寫一個頁面的話,就太麻煩了,所以,我們用 DotNetNuke現有的Reports模塊,在幾分鐘之內搞定這個問題。

Reports的原理其實就是用戶編寫SQL語句,直接在界面上進行展示,如果說類比的模塊的話,用主機管理員登錄之後的“主機管理——SQL服務”完成的是同樣的功能;當然,SQL服務更為復雜一點。

Reports模塊限定為只有主機管理員(Host)才能編寫SQL語句,這主要是為了確保數據庫的安全,雖然 Reports模塊已經將Create、Delete、Update等列為禁用關鍵詞,但是,為了確保數據庫的安全,仍然限定只有Host用戶才可以讀取數據庫中的內容。

下面,我們來演示一下,如果在幾分鐘之內,搞定我們的需求:將Forum某個板塊的前五條顯示在首頁上。

首先,要在首頁上新增加一個Reports模塊;

然後,用Host用戶登錄到系統,點擊該模塊的快捷菜單,點擊“設置”,進入設置的界面;在“報表設置”中,Active Data Source使用默認的DotNetNuke Data Source,然後Query字段中填入如下的內容:

SELECT '<a href=/tabid/54/forumid/5/threadid/' + LTrim(Str(ThreadID)) + '/scope/posts/Default.aspx>' + Subject + '</a>' AS 最新更新 FROM Forum_Posts WHERE ThreadID IN (SELECT TOP 5 ThreadID FROM Forum_Threads WHERE ForumID=5 ORDER BY ThreadID DESC ) ORDER BY PostID DESC

好了,完成設置之後,我們保存該設置,並且返回到頁面,看一下我們的界面上,是不是已經有了論壇最新的五條記錄

點擊鏈接之後,可以直接鏈接到帖子的內容。

原理大家只要看一下SQL語句就非常清楚了:我們只不過是用SQL語句,讀出論壇的標題,然後為該標題加上鏈接的地址,也就是如/tabid/54/forumid/5/threadid/12/scope/posts/Default.aspx這樣的地址,就可以完成以上的功能了。

Reports模塊還可以有更多的應用,比如,在我的RedstartForm模塊中,我使用Reports模塊來匯集當前用戶的待辦信息,於是,在不同模塊上的當前用戶的“待辦”數據,就可以集中在首頁上統一進行顯示,用戶點擊鏈接,就可以直接到達相關的頁面,甚至是直接打開內容了。原理都是一樣的,就是用SQL語句拼湊出URL和待讀取的內容,僅此而已。

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