zoukankan      html  css  js  c++  java
  • sharepoint 在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

    刘祖军
  • 相关阅读:
    wpf.xaml.behavior
    为你的硬件自动化统一构建root和firmware
    Dsm as deepin mate(2):在阿里云上真正实现单盘安装运行skynas
    Boot界的”开源os“ : coreboot,及再谈云OS和本地OS统一装机的融合
    0pe单文件夹,grub菜单全外置版
    阿里云上利用virtiope+colinux实现linux系统盘动态无损多分区
    比WEB更自然,jupyter用于通用软件开发的创新意义:使任何传统程序秒变WEB
    编程实践选型通史:*坦无架构APP开发支持与充分batteryincluded的微实践设施
    除了LINUX,我们真的有可选的第二开源操作系统吗?
    聪明的Mac osx本地云:同一生态的云硬件,云装机,云应用,云开发的完美集
  • 原文地址:https://www.cnblogs.com/liuzujun/p/2958010.html
Copyright © 2011-2022 走看看