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 ...
随机推荐
- Unity生成屏幕快照
public static Texture2D CaptureCamera(Camera camera, Rect rect) { RenderTexture rt = ); RenderTextur ...
- 二分检索函数lower_bound()和upper_bound()
二分检索函数lower_bound()和upper_bound() 一.说明 头文件:<algorithm> 二分检索函数lower_bound()和upper_bound() lower ...
- (转)不要自称是程序员,我十多年的 IT 职场总结
其他: 我是一名程序员,工作很努力,为什么绩效还总是垫底? 外企,中年失业何去何从? 来公司半年了,也悟出了一些道理. 如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是 ...
- JELLYFISH - Fast, Parallel k-mer Counting for DNA
kmer分析其实是非常耗费计算资源的,如果我们自己写脚本来分析kmer的话,首先要将所有的序列打断成一定长度的kmer,然后将所有的kmer存储起来,最后统计每个kmer出现的频率,或者统计出现指定次 ...
- 新概念 Lesson 4 Are you a teacher
打招呼用语: Good morning, Good afternoon,Good evening Nice to meet you. How do you do? She is French. 她是法 ...
- LeetCode--067--二进制求和
问题描述: 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1&quo ...
- luogu P2408 不同子串个数
考虑反向操作,去计算有多少组相同的子串,对于一组大小为k的极大相同子串的集合,ans-=k-1. 为了避免重复计算,需要一种有效的,有顺序的记录方案. 比如说,对于每一个相同组,按其起始点所在的位置排 ...
- vue封装组件的正确方式-封装类似elementui的组件
最近读了下element的源码,仿照他封装了两种不同的组件. 第一种:通过组件来调用显示的 <template> <!--src/component/custom/main.vue- ...
- Largest Point (2015沈阳赛区网络赛水题)
Problem Description Given the sequence A with n integers t1,t2,⋯,tn. Given the integral coefficients ...
- Windows环境搭建ElasticSearch 5.*并配置head
前言: ES5*以上版本需要jdk1.8,jdk1.8,jdk1.8.重要的事情说三遍 1.下载ElasticSearch https://www.elastic.co/cn/downloads/el ...