SharePoint PeopleEditor控件使用
以下用于简要介绍在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控件使用的更多相关文章
- 从PeopleEditor控件中取出多用户并更新到列表
如果一个列表中有一个字段类型为用户或用户组,并且设置为用户,允许多值的话,那么用代码进行更新的时候就必须将这个字段的值赋成SPFieldUserValueCollection类型,以下代码即为从Peo ...
- SharePoint用户控件编写的简单介绍
转:http://www.it165.net/design/html/201204/1131.html 我们开发中,通常需要写各种各样的部件来实现我们的展示或者功能,下面就介绍下刚刚接触的QuickP ...
- SharePoint 用户控件编写的简单介绍
我们开发中,通常需要写各种各样的部件来实现我们的展示或者功能,下面就介绍下刚刚接触的QuickPart+用户控件的方式,算是自己的学习笔记,也和大家交流下心得. 1. 新建Web应用程序 2. 在项目 ...
- 界面绚丽的SharePoint仪表盘控件Nevron Gauge for SharePoint 控件详细介绍
Nevron .NET Vision 是一款用于创建独特的.强大的数据表示应用程序的最终控件,它具有超强的数据可视化性能. 整合了Nevron Chart for .NET, Nevron Diagr ...
- SharePoint 2013 如何使用TaxonomyWebTaggingControl 控件
在该文章中,我将介绍如何使用TaxonomyWebTaggingControl控件, 首先我相信您已经在SharePoint Managed Metadata Service里定义Term Sets, ...
- SharePoint 2013 新功能探索 之 标注控件
SharePoint 2013 引入了新的UI,同时也跟进了网络潮流,把应用最广泛的标注控件也引入到了SharePoint,先看两个应用 以上是两个开发当中经常会用到,下面就介绍一下如何开发相同 ...
- SharePoint 中用户控件的开发及应用
1.新建解决方案以及SharePoint项目,步骤比较简单略过,然后映射CONTROLTEMPLATES文件夹,在里面添加用户控件(仅场解决方案),如下图: 2.解决方案结构,如下图: 简单介绍一下, ...
- 在SharePoint 2010 母版页里添加自定义用户控件
在SharePoint 2010 母版页里添加自定义用户控件(译) 使用自定义用户控件的好处: 1.容易部署:2.易于控制显示或隐藏. (在使用的过程中)可能要面对的问题是:如何在用户控件里使用Sha ...
- SharePoint 2010 master page 控件介绍(4):隐藏placeholder
转:http://blog.csdn.net/lgm97/article/details/6409225 <!-- form digest 安全控件用来进行form的安全校验--> &l ...
随机推荐
- SpringBoot读取war包jar包Resource资源文件解决办法
SpringBoot读取war包jar包Resource资源文件解决办法 场景描述 在开发过程中我们经常会碰到要在代码中获取资源文件的情况,而我在最近在SpringBoot项目中时碰到一个问题,就是在 ...
- 雷林鹏分享:C# 匿名方法
C# 匿名方法 我们已经提到过,委托是用于引用与其具有相同标签的方法.换句话说,您可以使用委托对象调用可由委托引用的方法. 匿名方法(Anonymous methods) 提供了一种传递代码块作为委托 ...
- ViewPager 如何得到当前的Fragment (使用FragmentPagerAdapter)
使用FragmentPagerAdapter时,难免要在MainActivity 和 当前显示的Fragment间传递数据.但是FragmentPagerAdapter并没有给我们提供类似getCur ...
- 单细胞 RNA-seq 10X Genomics
单细胞流程跑了不少,但依旧看不懂结果,是该好好补补了. 有些人可能会误会,觉得单细胞的RNA-seq数据很好分析,跟分析常规的RNA-seq应该没什么区别.今天的这篇文章2015年3月发表在Natur ...
- LeetCode--217--存在重复元素
问题描述: 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出 ...
- 3-18 关于namespace,双冒号::的用法; SelfYield.
关于namespace,双冒号::的用法. 防止引用多个模块在一个文件/类中,有重名的对象.::可以调用类的类方法,和常量. class Foo BAR = "hello" ...
- 20 多继承 MRO 算法 深度优先遍历 super
类的多继承 一个类可以继承多个无关的类. 一个类可以被多个无关的类继承 1.经典类. 在python2.2之前. 已经是历史了. MRO 采用的是树形结构的深度递归遍历(一条道跑到黑) 2.新式类 在 ...
- Sasha and a Very Easy Test CodeForces - 1109E (数学,线段树)
大意: 给定n元素序列, q个操作: (1)区间乘 (2)单点除(保证整除) (3)区间求和对m取模 要求回答所有操作(3)的结果 主要是除法难办, 假设单点除$x$, $x$中与$m$互素的素因子可 ...
- SPFA 最短路
求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm. SPFA算法是西南交通大学段凡丁于1994年发表的. 从名字我们就可以看出,这种算法在 ...
- POJ-1753 Flip Game (BFS+状态压缩)
Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of i ...