以下用于简要介绍在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. 30分钟带你了解Docker

    最近一直在忙项目,不知不觉2个多月没有更新博客了.正好自学了几天docker就干脆总结一下,也顺带增加一篇<30分钟入门系列>.网上能够查到的对于docker的定义我就不再重复了,说说我自 ...

  2. PHP访问Oracle数据库

    说明:Oracle数据库帐号:sticOracle数据库密码:sticOracle数据库实例:orclOracle数据库表:UserInfoOracle表的列:ID,Name 不处理异常的代码如下:/ ...

  3. [Java学习] Java异常类型

    所有异常类型都是内置类Throwable的子类.因此,Throwable在异常类层次结构的顶层.紧接着Throwable下面的是两个把异常分成两个不同分支的子类.一个分支是Exception. 该类用 ...

  4. Confluence 6 完成你的任务

    很好,宇航员们,你已经令人钦佩的展示了你自己的.我们确定你新招募的员工已经对你了解的 Confluence 知识感到赞叹. 在这个指南中,我们已经完成了: 在主面板中对 Confluence 的功能进 ...

  5. 50 Jquery 库

    一.概念: 1.jquery 的选择器和ccs 相同 2.jquery对象, dom对象的集合,类似python中list,有自己的各种方法和属性 // [dom1,dom2,.....] 3.方便之 ...

  6. Jzzhu and Apples CodeForces - 449C (构造,数学)

    大意: 求从[1,n]范围选择尽量多的数对, 使得每对数的gcd>1 考虑所有除2以外且不超过n/2的素数p, 若p倍数可以选择的有偶数个, 直接全部划分即可 有奇数个的话, 余下一个2*p不划 ...

  7. ubuntu mysql主从库的搭建

    1,首先我们要确定一个从库一个主库,紧记从库只能读取不能有其他的操作,如果操作写那主从就失效了,那就看看我们这么搭建主从吧! 2. 环境:Ubuntu,Mysql (主从的数据库版本必须保持一致) 主 ...

  8. 双十一用python秒杀京东好货!

    好久没用python了,都写不来了. 需要用到selenium 和 Chromedriver: 我只是记录一下几个坑: 第一个坑:自己电脑里安装了两个版本的python ,3.5和3.6 结果我在pi ...

  9. http 请求和格式

    get 请求:从指定的资源请求数据. post请求:向指定的资源提交要被处理的数据. head请求:与 GET 相同,但只返回 HTTP 报头,不返回资源实体. option请求:返回服务器支持的 H ...

  10. 未能加载文件或程序集“LinqToExcel”或它的某一个依赖项。试图加载格式不正确的程序。

    未能加载文件或程序集“*”或它的某一个依赖项.试图加载格式不正确的程序. 原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题解决方案一:如果是64位机器,IIS—— ...