以下用于简要介绍在SharePoint 2016二次开发中如何使用PeopleEditor人员选择器,并采用前端的方式获取和设置值。

一、在使用的.aspx页面进行注册

  1. <%@ Register TagPrefix="sp" Namespace="Microsoft.SharePoint.WebControls"
  2. Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

二、引用Css和Js文件

  1. <sp:CssLink ID="CssLink1" runat="server" Version=""></sp:CssLink>
  2. <sp:ScriptLink ID="ScriptLink1" Language="javascript" Name="core.js" OnDemand="true" runat="server" Localizable="false"></sp:ScriptLink>
  3. <sp:DelegateControl ID="DelegateControl1" runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"></sp:DelegateControl>
  4. <sp:CssRegistration ID="CssRegistration1" Name="Themable/corev15.css" runat="server"></sp:CssRegistration>

若采用SharePoint原生母版页,以上2个步骤,就已存在,无需从新引用,若采用自定义母版页,需要自己注册和添加相关文件;

三、使用实例Demo

  1. <fieldset>
  2. <legend>SP人员选择器</legend>
  3. <sp:PeopleEditor ID="PeopleEditor1" runat="server" Width="329px" Height="65px" AllowEmpty="true" MultiSelect="True" SelectionSet="User,DL,SecGroup,SPGroup" ValidatorEnabled="True" />
  4.  
  5. <br />
  6.  
  7. <input id="btnSet" type="button" value="设置值" />
  8. <input id="btnGet" type="button" value="获取值" />
  9. <input id="btnGetFirst" type="button" value="获取第一个用户值" />
  10. <%--<input id="btnClear" type="button" value="清空值"/>--%>
  11. <br />
  12.  
  13. <textarea id="btnInfo"></textarea>
  14.  
  15. <script>
  16. $(function () {
  17.  
  18. $("#btnGet").click(function () {
  19. var infoString = "";
  20. var loginInfo = getPeopleEditorValue("<%=PeopleEditor1.ClientID%>");
  21. var loginInfoArray = loginInfo.split("!#");
  22. $.each(loginInfoArray, function (i, item) {
  23. if (item.indexOf("i:0#.w|") > -1) {//域用户
  24. infoString += "用户:" + item + "\r\n";
  25. }
  26. else if (item.indexOf("c:0+.w|") > -1) {//域组
  27. infoString += "域组:" + item + "\r\n";
  28.  
  29. } else {
  30. infoString += "SP组:" + item + "\r\n";
  31. }
  32. });
  33. $("#btnInfo").val(infoString);
  34. });
  35.  
  36. $("#btnSet").click(function () {
  37. setPeopleEditorValue("<%=PeopleEditor1.ClientID%>", "liyuxin;bli;软件部;丽水烟草模板管理系统 位成员");
  38. });
  39.  
  40. $("#btnClear").click(function () {
  41. clearPeopleEditor("<%=PeopleEditor1.ClientID%>");
  42. });
  43.  
  44. $("#btnGetFirst").click(function () {
  45.  
  46. function userCall(user) {
  47. var userId = user.get_id();
  48. var userLoginName = user.get_loginName();
  49. var userTitle = user.get_title();
  50. $("#btnInfo").val(userId + ";#" + userLoginName + ";#" + userTitle);
  51. }
  52.  
  53. getUserByLoginName("liyuxin", userCall);
  54.  
  55. });
  56.  
  57. });
  58.  
  59. //获取人员选择器的值
  60. function getPeopleEditorValue(pickerid) {
  61. var loginInfo = [];
  62. var items = $(".ms-entity-resolved", "#" + pickerid + "_upLevelDiv");
  63. $.each(items, function () {
  64. var entity = $("#divEntityData", this);
  65. var key = entity.attr("key");
  66. var displaytext = entity.attr("displaytext");
  67. loginInfo.push(key + ";#" + displaytext);
  68. });
  69. return loginInfo.join('!#');
  70. }
  71.  
  72. //设置人员选择器值,controlID:控件Id;userName:帐号,多个用分号隔开
  73. function setPeopleEditorValue(pickerid, userName) {
  74. $("#" + pickerid + "_upLevelDiv").text(userName);
  75. if (!ValidatePickerControl(pickerid)) {
  76. ShowValidationError();
  77. return false;
  78. }
  79. var arg = getUplevel(pickerid);
  80. var ctx = pickerid;
  81. EntityEditorSetWaitCursor(ctx);
  82. WebForm_DoCallback(pickerid.replace(/_/g, '$'), arg, EntityEditorHandleCheckNameResult, ctx, EntityEditorHandleCheckNameError, true);
  83. return false;
  84. }
  85.  
  86. //清空人员选择值
  87. function clearPeopleEditor(pickerid) {
  88. var field = $("#" + pickerid + "_upLevelDiv");
  89. field.find('.ms-inputuserfield').html("");
  90. field.find("textarea:first").val("");
  91. }
  92.  
  93. //根据账号返回用户对象
  94. function getUserByLoginName(loginName, callback) {
  95. SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
  96. var context = new SP.ClientContext.get_current();
  97. this._UserTemp = context.get_web().ensureUser(loginName);
  98. context.load(this._UserTemp);
  99. //这里用的是异步方法,第一个参数是成功后调用,第二个参数是失败后调用
  100. context.executeQueryAsync(
  101. Function.createDelegate(null, function () {
  102. callback(this._UserTemp);
  103. //var _userID = this._UserTemp.get_id();
  104. //var _userLoginName = _UserTemp.get_loginName();
  105. //var _userTitle = _UserTemp.get_title();
  106.  
  107. //callback(_userID + ";#" + _userLoginName + ";#" + _userTitle);
  108. }),
  109. Function.createDelegate(null, function () { alert("请确认是否在选人的地方都已经填入了信息"); })
  110. );
  111. });
  112. }
  113.  
  114. </script>
  115.  
  116. </fieldset>

使用实例图:

四、人员选择器属性说明

  1、AllowEmpty:是否允许为空;

  2、ValidatorEnabled:开启验证;

  3、SelectionSet:设置选择范围,可设置为:组,人,及Ad的安全组,如:User,DL,SecGroup,SPGroup

  4、MultiSelect:是否可多选

SharePoint PeopleEditor控件使用的更多相关文章

  1. 从PeopleEditor控件中取出多用户并更新到列表

    如果一个列表中有一个字段类型为用户或用户组,并且设置为用户,允许多值的话,那么用代码进行更新的时候就必须将这个字段的值赋成SPFieldUserValueCollection类型,以下代码即为从Peo ...

  2. SharePoint用户控件编写的简单介绍

    转:http://www.it165.net/design/html/201204/1131.html 我们开发中,通常需要写各种各样的部件来实现我们的展示或者功能,下面就介绍下刚刚接触的QuickP ...

  3. SharePoint 用户控件编写的简单介绍

    我们开发中,通常需要写各种各样的部件来实现我们的展示或者功能,下面就介绍下刚刚接触的QuickPart+用户控件的方式,算是自己的学习笔记,也和大家交流下心得. 1. 新建Web应用程序 2. 在项目 ...

  4. 界面绚丽的SharePoint仪表盘控件Nevron Gauge for SharePoint 控件详细介绍

    Nevron .NET Vision 是一款用于创建独特的.强大的数据表示应用程序的最终控件,它具有超强的数据可视化性能. 整合了Nevron Chart for .NET, Nevron Diagr ...

  5. SharePoint 2013 如何使用TaxonomyWebTaggingControl 控件

    在该文章中,我将介绍如何使用TaxonomyWebTaggingControl控件, 首先我相信您已经在SharePoint Managed Metadata Service里定义Term Sets, ...

  6. SharePoint 2013 新功能探索 之 标注控件

    SharePoint 2013 引入了新的UI,同时也跟进了网络潮流,把应用最广泛的标注控件也引入到了SharePoint,先看两个应用    以上是两个开发当中经常会用到,下面就介绍一下如何开发相同 ...

  7. SharePoint 中用户控件的开发及应用

    1.新建解决方案以及SharePoint项目,步骤比较简单略过,然后映射CONTROLTEMPLATES文件夹,在里面添加用户控件(仅场解决方案),如下图: 2.解决方案结构,如下图: 简单介绍一下, ...

  8. 在SharePoint 2010 母版页里添加自定义用户控件

    在SharePoint 2010 母版页里添加自定义用户控件(译) 使用自定义用户控件的好处: 1.容易部署:2.易于控制显示或隐藏. (在使用的过程中)可能要面对的问题是:如何在用户控件里使用Sha ...

  9. SharePoint 2010 master page 控件介绍(4):隐藏placeholder

    转:http://blog.csdn.net/lgm97/article/details/6409225 <!-- form digest  安全控件用来进行form的安全校验--> &l ...

随机推荐

  1. Unity生成屏幕快照

    public static Texture2D CaptureCamera(Camera camera, Rect rect) { RenderTexture rt = ); RenderTextur ...

  2. 二分检索函数lower_bound()和upper_bound()

    二分检索函数lower_bound()和upper_bound() 一.说明 头文件:<algorithm> 二分检索函数lower_bound()和upper_bound() lower ...

  3. (转)不要自称是程序员,我十多年的 IT 职场总结

    其他: 我是一名程序员,工作很努力,为什么绩效还总是垫底? 外企,中年失业何去何从? 来公司半年了,也悟出了一些道理. 如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是 ...

  4. JELLYFISH - Fast, Parallel k-mer Counting for DNA

    kmer分析其实是非常耗费计算资源的,如果我们自己写脚本来分析kmer的话,首先要将所有的序列打断成一定长度的kmer,然后将所有的kmer存储起来,最后统计每个kmer出现的频率,或者统计出现指定次 ...

  5. 新概念 Lesson 4 Are you a teacher

    打招呼用语: Good morning, Good afternoon,Good evening Nice to meet you. How do you do? She is French. 她是法 ...

  6. LeetCode--067--二进制求和

    问题描述: 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1&quo ...

  7. luogu P2408 不同子串个数

    考虑反向操作,去计算有多少组相同的子串,对于一组大小为k的极大相同子串的集合,ans-=k-1. 为了避免重复计算,需要一种有效的,有顺序的记录方案. 比如说,对于每一个相同组,按其起始点所在的位置排 ...

  8. vue封装组件的正确方式-封装类似elementui的组件

    最近读了下element的源码,仿照他封装了两种不同的组件. 第一种:通过组件来调用显示的 <template> <!--src/component/custom/main.vue- ...

  9. Largest Point (2015沈阳赛区网络赛水题)

    Problem Description Given the sequence A with n integers t1,t2,⋯,tn. Given the integral coefficients ...

  10. Windows环境搭建ElasticSearch 5.*并配置head

    前言: ES5*以上版本需要jdk1.8,jdk1.8,jdk1.8.重要的事情说三遍 1.下载ElasticSearch https://www.elastic.co/cn/downloads/el ...