以下用于简要介绍在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. 真核生物基因结构 & mRNA结构

    参考: 分子生物学教材 再一次,翻看真核生物基因结构! mRNA基本结构特点 Structure and function of Messenger RNA (mRNA ) 基因结构 其实这个结构不完 ...

  2. UVA557 汉堡 Burger

    题面 https://www.luogu.org/problemnew/show/UVA557 这里顺便整理一下二维格点随机游走问题. 遇到这种问题时,需注意分母的计算问题. 设x为起点到终点的距离. ...

  3. javaScript数组的三种属性—数组索引、数组内置属性、数组自定义属性

    JS数组也是一种对象. 我们用JavaScript处理的所有东西,都可以视为是一种对象. JavaScript中有两种数据类型,基本类型数对象类型,但是基本类型基本都是包括在对象类型之中的. 数组.函 ...

  4. HDU-1163 Eddy's digital Roots(九余数定理)

    Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  5. Nodejs AES加密

    这几天被一个问题困扰着. Nodejs的AES加密和Java,C#加密出来的不一致.当然,这样就不能解密了. 纠结了许久:后来还是实在不行了,看了下源代码,要不然还得继续纠结下去. 网上说,通常的no ...

  6. 使用Div + CSS布局页面

    在设计网页时,能够控制好各个模块在页面中的位置是非常关键的.本章将讲解利用Div+CSS对页面元素进行定位的方法. Div是HTML中指定的专门用于布局设计的容器对象 Div是CSS布局的核心对象. ...

  7. POJ 3176 Cow Bowling(dp)

    POJ 3176 Cow Bowling 题目简化即为从一个三角形数列的顶端沿对角线走到底端,所取得的和最大值 7 * 3 8 * 8 1 0 * 2 7 4 4 * 4 5 2 6 5 该走法即为最 ...

  8. CentOS6编译安装Python3

    CentOS6默认Python版本是2, 但我使用的是Python3,因此需要自己安装 但记住,不要删除自带的Python2,否则很多东西会报错,比如yum之类的.(别问我为什么知道...) 话不多说 ...

  9. MySQL 存储过程中执行DDL

    一.定期增加表分区 1.增加表分区例 CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `p_create_Partition`(IN databaseName ...

  10. TMemo的ScrollBars属性和大文本

    给TMemo.Text := '几M大的文本'; 如果 ScrollBars 不是 sbBoth的话,程序很可能 无响应. 今天郁闷了半天才发现的.