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

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

編輯:關於ASP.NET

在(一)中,我們描述了如何在一分鐘之內(如果你SQL語句足夠熟練的話),將已有的數據重新打亂、組合、排列,等等,Whatever you want,總之,是用已有的數據,組合成一個新的數據模塊。我們介紹了Reports,這個模塊非常方便,也極其簡單,就是把我們用SELECT語句選擇出來的列,全部都放在一個模塊之內,其實,這就是一個非常開放的模塊、也非常好用的模塊,如果我們自己開發的模塊,可以達到這種效果的話,那麼,應該就算是非常成功了。

Reports的新版(大概是4.0以後的版本,07年的版本還無此功能),已經可以定義Visualizer了,也就是列表的顯示方式也是開放的,可以用一般的Grid,也可以用更為豐富的顯示模式,比如我們自己定義的一個XSL文件或者HTML文件來解析數據。這樣的擴展非常好,我的RedstartForm模塊在編輯界面上可以由用戶自行建立ascx文件,實現動態的展現;但是列表界面還沒有做到,希望可以將這個特性引入進來。

不但是Reports模塊,UDT模塊也早就有了可以擴展的列表樣式,用戶可以自行定義;不過遺憾的是UDT的Edit界面還不是動態的,希望新版的UDT,也就是Forms & List在這方面可以加強。

在(一)中提到,可以讀取當前用戶的一些“待辦”的信息,敏感的讀者會問:用戶的信息在哪裡呢?

是的,這也就是Reports的參數,Reports已經提供了部分參數,如下面的語句中展示的:

Code
    Public Shared Function BuildParameters(ByVal SrcModule As PortalModuleBase) As Dictionary(Of String, Object)
      Dim dict As New Dictionary(Of String, Object)
      If SrcModule IsNot Nothing Then
        dict.Add("PortalID", SrcModule.PortalId)
        dict.Add("TabID", SrcModule.TabId)
        dict.Add("ModuleID", SrcModule.ModuleId)
        dict.Add("UserID", SrcModule.UserId)
      End If
      Return dict

只有靠模塊提供的參數,我們才能去“識別”一些動態的信息,比如:當前登錄的用戶、當前的模塊、頁面等等,只有四個,當然有點少,不過,既然我們可以自己在模塊的配置中自行編寫SQL語句,那麼,有了UserID,原則上就可以知道所有的用戶信息了。

我們假設有一個Reports模塊,是現實當前用戶的一些數據的,那麼,我們就可以在頁面上增加一個Reports模塊,然後,其SQL語句這樣編寫:

SELECT * FROM Users WHERE UserID=

大家有興趣的話可以自己試一下,就可以出現如下的運行結果:

這就是一個最簡單的利用參數的例子了;當然,Title都是E文的,用AS給一個中文的字段就可以了;一大堆沒有的字段,那麼,在SELECT的時候,指定只選擇固定的字段就可以了,如:

SELECT DisplayName AS 名稱 FROM Users WHERE UserID=@UserID

類似的參數運用,我們還可以在IFrame模塊中看到,IFrame支持的參數更多一些,大家請看一下下圖:

下拉列表中,就是IFrame模塊提供給用戶的參數。很多是嗎?嗯,那是因為在IFrame模塊中,就不能寫SQL語句去讀取其他的內容了,所以,能列出來的就盡量列出來;不過,在我使用IFrame模塊的時候,仍然改動了代碼,為之增加了PortalAlias這個參數(原本的IFrame模塊是沒有這個參數的)。之所以增加這個參數,是為了訪問本機上的另外一個Web系統(非DotNetNuke)。為什麼要增加這個參數呢?因為我的系統可能是被用戶從局域網訪問的,也可能是被用戶從互聯網訪問的;可能是用戶從IP地址訪問的,也可能是用戶從機器名訪問的(在 Host的“網站設置——網站管理——域名綁定”中綁定了所有的可能),這個時候,如果用戶從局域網裡面訪問DotNetNuke,但是IFrame嵌套的Web系統卻走固定的互聯網地址的話,就不太好了,所以,增加了一個PortalAlias的參數,當然,這個是另外的一個話題了。

在我開發RedstartForm這個工作流模塊的時候,也用到了參數,但是,我的參數卻是這樣定義的:{UserID} {ModuleID},也就是用大括號將之括起來,在括號之中的才識別為參數,而在括號之外的則不識別為參數,在這裡,我有我的考慮,等到時機成熟的時候,我們再介紹那個模塊的參數處理機制。

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