在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表單
第二步:為UserProfileService建立數據連接
在功能區中選擇數據連接:
在數據連接對話框中點擊添加按鈕:
在數據連接向導第一頁選擇新建連接->接收數據:
在數據連接向導第二頁選擇SOAP Web服務:
在數據連接向導第三頁輸入UserProfileService的網址:http://ServerName/_vti_bin/UserProfileService.asmx
在數據連接向導第四頁,選中GetUserProfileByName:
在數據連接向導第五頁,不用設置,直接點下一步:
在數據連接向導第六頁,保持復選框為非選擇狀態:
在數據連接向導最后一頁,保持默認選項,完成向導:
添加完數據連接后,數據連接對話框變成如下,關閉此對話框:
第三步:建立域用於存放當前用戶的LoginName
在域面板中:
添加一字符串域CreaterLoginName:
然后再打開域屬性:
設置默認值,點默認值后面的按鈕fx:
在插入公式中,點擊插入域或組。在域下拉框中選擇GetUserProfileByName,然后選中myFields\dataFields\tns:GetUserProfilePyNameResponse\GetUserProfileByNameResult\PropertyData\Values\ValueData\Value。如下圖所示:
再點擊篩選數據:
點擊添加按鈕:
在第一個下拉框中選擇”選擇域或組“,在域下拉框中選擇GetUserProfileByName,然后選中myFields\dataFields\tns:GetUserProfilePyNameResponse\GetUserProfileByNameResult\PropertyData\Name。如下圖所示:
在第二個下拉框中選擇”等於“,在第三個下拉框中,選擇”鍵入文本…“,輸入”AccountName“:
點擊幾次確定,關閉對話框,回到”域或組屬性對話框“中,去掉”重新計算公式時刷新值“前面的鈎:
第四步:使用LoginName
就看您需要怎么樣用LoginName了,我這里簡單將CreaterLoginName顯示在表單中,看看預覽效果:
寫在最后:
如果需要獲取其他用戶的Profile,則只要在獲取數據之前給GetUserProfileByName中設置AccountName的值,再獲取數據,就能夠獲取到其他用戶的Profile:
如果需要獲取其他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