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

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

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

二、引用Css和Js文件

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

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

三、使用实例Demo

<fieldset>
<legend>SP人员选择器</legend>
<sp:PeopleEditor ID="PeopleEditor1" runat="server" Width="329px" Height="65px" AllowEmpty="true" MultiSelect="True" SelectionSet="User,DL,SecGroup,SPGroup" ValidatorEnabled="True" /> <br /> <input id="btnSet" type="button" value="设置值" />
<input id="btnGet" type="button" value="获取值" />
<input id="btnGetFirst" type="button" value="获取第一个用户值" />
<%--<input id="btnClear" type="button" value="清空值"/>--%>
<br /> <textarea id="btnInfo"></textarea> <script>
$(function () { $("#btnGet").click(function () {
var infoString = "";
var loginInfo = getPeopleEditorValue("<%=PeopleEditor1.ClientID%>");
var loginInfoArray = loginInfo.split("!#");
$.each(loginInfoArray, function (i, item) {
if (item.indexOf("i:0#.w|") > -1) {//域用户
infoString += "用户:" + item + "\r\n";
}
else if (item.indexOf("c:0+.w|") > -1) {//域组
infoString += "域组:" + item + "\r\n"; } else {
infoString += "SP组:" + item + "\r\n";
}
});
$("#btnInfo").val(infoString);
}); $("#btnSet").click(function () {
setPeopleEditorValue("<%=PeopleEditor1.ClientID%>", "liyuxin;bli;软件部;丽水烟草模板管理系统 位成员");
}); $("#btnClear").click(function () {
clearPeopleEditor("<%=PeopleEditor1.ClientID%>");
}); $("#btnGetFirst").click(function () { function userCall(user) {
var userId = user.get_id();
var userLoginName = user.get_loginName();
var userTitle = user.get_title();
$("#btnInfo").val(userId + ";#" + userLoginName + ";#" + userTitle);
} getUserByLoginName("liyuxin", userCall); }); }); //获取人员选择器的值
function getPeopleEditorValue(pickerid) {
var loginInfo = [];
var items = $(".ms-entity-resolved", "#" + pickerid + "_upLevelDiv");
$.each(items, function () {
var entity = $("#divEntityData", this);
var key = entity.attr("key");
var displaytext = entity.attr("displaytext");
loginInfo.push(key + ";#" + displaytext);
});
return loginInfo.join('!#');
} //设置人员选择器值,controlID:控件Id;userName:帐号,多个用分号隔开
function setPeopleEditorValue(pickerid, userName) {
$("#" + pickerid + "_upLevelDiv").text(userName);
if (!ValidatePickerControl(pickerid)) {
ShowValidationError();
return false;
}
var arg = getUplevel(pickerid);
var ctx = pickerid;
EntityEditorSetWaitCursor(ctx);
WebForm_DoCallback(pickerid.replace(/_/g, '$'), arg, EntityEditorHandleCheckNameResult, ctx, EntityEditorHandleCheckNameError, true);
return false;
} //清空人员选择值
function clearPeopleEditor(pickerid) {
var field = $("#" + pickerid + "_upLevelDiv");
field.find('.ms-inputuserfield').html("");
field.find("textarea:first").val("");
} //根据账号返回用户对象
function getUserByLoginName(loginName, callback) {
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
var context = new SP.ClientContext.get_current();
this._UserTemp = context.get_web().ensureUser(loginName);
context.load(this._UserTemp);
//这里用的是异步方法,第一个参数是成功后调用,第二个参数是失败后调用
context.executeQueryAsync(
Function.createDelegate(null, function () {
callback(this._UserTemp);
//var _userID = this._UserTemp.get_id();
//var _userLoginName = _UserTemp.get_loginName();
//var _userTitle = _UserTemp.get_title(); //callback(_userID + ";#" + _userLoginName + ";#" + _userTitle);
}),
Function.createDelegate(null, function () { alert("请确认是否在选人的地方都已经填入了信息"); })
);
});
} </script> </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. SpringBoot读取war包jar包Resource资源文件解决办法

    SpringBoot读取war包jar包Resource资源文件解决办法 场景描述 在开发过程中我们经常会碰到要在代码中获取资源文件的情况,而我在最近在SpringBoot项目中时碰到一个问题,就是在 ...

  2. 雷林鹏分享:C# 匿名方法

    C# 匿名方法 我们已经提到过,委托是用于引用与其具有相同标签的方法.换句话说,您可以使用委托对象调用可由委托引用的方法. 匿名方法(Anonymous methods) 提供了一种传递代码块作为委托 ...

  3. ViewPager 如何得到当前的Fragment (使用FragmentPagerAdapter)

    使用FragmentPagerAdapter时,难免要在MainActivity 和 当前显示的Fragment间传递数据.但是FragmentPagerAdapter并没有给我们提供类似getCur ...

  4. 单细胞 RNA-seq 10X Genomics

    单细胞流程跑了不少,但依旧看不懂结果,是该好好补补了. 有些人可能会误会,觉得单细胞的RNA-seq数据很好分析,跟分析常规的RNA-seq应该没什么区别.今天的这篇文章2015年3月发表在Natur ...

  5. LeetCode--217--存在重复元素

    问题描述: 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出 ...

  6. 3-18 关于namespace,双冒号::的用法; SelfYield.

    关于namespace,双冒号::的用法. 防止引用多个模块在一个文件/类中,有重名的对象.::可以调用类的类方法,和常量. class Foo   BAR = "hello"   ...

  7. 20 多继承 MRO 算法 深度优先遍历 super

    类的多继承 一个类可以继承多个无关的类. 一个类可以被多个无关的类继承 1.经典类. 在python2.2之前. 已经是历史了. MRO 采用的是树形结构的深度递归遍历(一条道跑到黑) 2.新式类 在 ...

  8. Sasha and a Very Easy Test CodeForces - 1109E (数学,线段树)

    大意: 给定n元素序列, q个操作: (1)区间乘 (2)单点除(保证整除) (3)区间求和对m取模 要求回答所有操作(3)的结果 主要是除法难办, 假设单点除$x$, $x$中与$m$互素的素因子可 ...

  9. SPFA 最短路

    求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm.     SPFA算法是西南交通大学段凡丁于1994年发表的.    从名字我们就可以看出,这种算法在 ...

  10. POJ-1753 Flip Game (BFS+状态压缩)

    Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of i ...