在InfoPath中如何獲取當前用戶的信息(Profile)


在InfoPath中如何獲取當前用戶的信息(Profile)

InfoPath本身提供了一個函數UserName()用於獲取當前用戶,但這個函數只能獲取到登錄名后面一段。假如當前用戶是Domain\User1,用函數UserName()獲取到的值是User1。在單域環境下使用UserName()函數是沒有問題的。但是遇到復雜的域環境時,該函數就無法滿足用戶的需要了。比如User1同時在Domain0和Domain1中都有用戶名稱為User1的用戶:Domain0\User1和Domain1\User1。InfoPath的函數UserName()是無法區分這兩個名稱的。

為了解決這個問題,我在網上搜了好長時間,最后終於找到徹底的解決辦法。在此分享給各位網友。

有個前提,就是我使用InfoPath是在SharePoint上填寫表單的情況,因此獲取當前用戶的方法是從SharePoint的UserProfileService中獲取的。如果不是在SharePoint填寫表單的情況,下面所述方法可能不適合您。

第一步:用SharePoint表單庫模板新建一個InfoPath表單

image

第二步:為UserProfileService建立數據連接

在功能區中選擇數據連接:

image

在數據連接對話框中點擊添加按鈕:

image

在數據連接向導第一頁選擇新建連接->接收數據:

image

在數據連接向導第二頁選擇SOAP Web服務:

image

在數據連接向導第三頁輸入UserProfileService的網址:http://ServerName/_vti_bin/UserProfileService.asmx

image

在數據連接向導第四頁,選中GetUserProfileByName:

image

在數據連接向導第五頁,不用設置,直接點下一步:

image

在數據連接向導第六頁,保持復選框為非選擇狀態:

image

在數據連接向導最后一頁,保持默認選項,完成向導:

image

添加完數據連接后,數據連接對話框變成如下,關閉此對話框:

image

第三步:建立域用於存放當前用戶的LoginName

在域面板中:

image

添加一字符串域CreaterLoginName:

image

然后再打開域屬性:

image

設置默認值,點默認值后面的按鈕fx:

image

在插入公式中,點擊插入域或組。在域下拉框中選擇GetUserProfileByName,然后選中myFields\dataFields\tns:GetUserProfilePyNameResponse\GetUserProfileByNameResult\PropertyData\Values\ValueData\Value。如下圖所示:

image

再點擊篩選數據:

image

點擊添加按鈕:

image

在第一個下拉框中選擇”選擇域或組“,在域下拉框中選擇GetUserProfileByName,然后選中myFields\dataFields\tns:GetUserProfilePyNameResponse\GetUserProfileByNameResult\PropertyData\Name。如下圖所示:

image

在第二個下拉框中選擇”等於“,在第三個下拉框中,選擇”鍵入文本…“,輸入”AccountName“:

image

點擊幾次確定,關閉對話框,回到”域或組屬性對話框“中,去掉”重新計算公式時刷新值“前面的鈎:

image

第四步:使用LoginName

就看您需要怎么樣用LoginName了,我這里簡單將CreaterLoginName顯示在表單中,看看預覽效果:

image

寫在最后:

如果需要獲取其他用戶的Profile,則只要在獲取數據之前給GetUserProfileByName中設置AccountName的值,再獲取數據,就能夠獲取到其他用戶的Profile:

image

如果需要獲取其他Profile的值,只需要將AccountName改成其他屬性值。可用的屬性值有:

UserProfile_GUID    AccountName     FirstName     LastName     PreferredName     WorkPhone     Office     Department     Title     Manager     AboutMe     PersonalSpace     PictureURL     UserName     QuickLinks     WebSite     PublicSiteRedirect     SPS-Dotted-line     SPS-Peers     SPS-Responsibility     SPS-Skills     SPS-PastProjects     SPS-Interests     SPS-School     SPS-SipAddress     SPS-Birthday     SPS-MySiteUpgrade     SPS-DontSuggestList     SPS-ProxyAddresses     SPS-HireDate     SPS-LastColleagueAdded     SPS-OWAUrl     SPS-ResourceAccountName     SPS-MasterAccountName     Assistant     WorkEmail     CellPhone     Fax     HomePhone

 

來自閃電博客:http://www.cnblogs.com/baiguli/archive/2011/02/11/1951341.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM