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="15"></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:是否可多选

原文地址:https://www.cnblogs.com/liyuxin/p/8465050.html

时间: 2024-11-02 11:02:08

SharePoint PeopleEditor控件使用的相关文章

SharePoint统计图表控件Nevron Chart for SharePoint控件介绍

Nevron Chart for SharePoint是一个先进的图表Web部件,其能为您的SharePoint站点提供一整套的2D和3D图表类型,高度可自定义的轴,先进的数据分析功能,严密的数据集成和无与伦比的视觉效果.其组合了业内领先的Nevron Charting engine for ASP.NET以及Nevron Pivot Data Aggregation engine.这使得用户能在SharePoint环境中直观的完成复杂的透视图表的创建. 主要功能: 支持SharePoint S

界面绚丽的SharePoint仪表盘控件Nevron Gauge for SharePoint 控件详细介绍

Nevron .NET Vision 是一款用于创建独特的.强大的数据表示应用程序的最终控件,它具有超强的数据可视化性能. 整合了Nevron Chart for .NET, Nevron Diagram for .NET 和 Nevron User Interface for .NET,其良好设计的对象模型.以及众多的特性和无可比的"out of the box"陈述品质,使得复杂的数据可视化变的简单且易于理解.这也使得Nevron .NET Vision堪称一款一流的控件. 此产品

sharepoint 获取PeopleEditor控件中的用户和组

一段经典的代码 返回后直接赋值

SharePoint 2013 如何使用TaxonomyWebTaggingControl 控件

在该文章中,我将介绍如何使用TaxonomyWebTaggingControl控件, 首先我相信您已经在SharePoint Managed Metadata Service里定义Term Sets,如果没有,请先定义您的Term Sets(可以参考该文章how to create metadata column), 该控件能帮助我们显示/设置各种Terms. 其次我们需要了解Managed Metadata的结构,请看以下图,您可以清晰地看到每一个结构(Term Store -> Group

sharepoint 2013 附件控件FileUpload如何检验是否为图片的方法

记录一下关于附件控件FileUpload如何检验是否为图片的方法: function checkImg() { var fileObj =document.getElementById('<%=FileObj.ClientID%>'); var str =fileObj.value; if (str !='') { if(str.substring((str.lastIndexOf(".jpg"))) == (".jpg") ||str.substrin

【SharePoint】SharePoint2013中使用客户端对象模型给用户控件赋初值

本文要实现的功能:新建一条列表记录,打开新建记录画面时,自动给[申请人]赋值为当前登录用户. 在SharePoint2010中,可以使用SPServices的SPFindPeoplePicker方法来设定用户选择控件的值. 其中SPGetCurrentUser用来取得当前登录的用户名. $().SPServices.SPFindPeoplePicker({ peoplePickerDisplayName: "申请人", valueToSet: $().SPServices.SPGetC

图表Web组件提供2D和3D图表类型控件Nevron Chart for SharePoint

Nevron Chart for SharePoint是一个先进的图表Web组件,其能为您的SharePoint站点提供一整套的2D和3D图表类型,高度可自定义的轴,先进的数据分析功能,严密的数据集成和无与伦比的视觉效果.其组合了业内领先的Nevron Charting engine for ASP.NET以及Nevron Pivot Data Aggregation engine.这使得用户能在SharePoint环境中直观的完成复杂的透视图表的创建. 此产品属于产品Nevron ShareP

sharepoint 2013 附件控件FileUpload怎样检验是否为图片的方法

记录一下关于附件控件FileUpload怎样检验是否为图片的方法: function checkImg() { var fileObj =document.getElementById('<%=FileObj.ClientID%>'); var str =fileObj.value; if (str !='') { if(str.substring((str.lastIndexOf(".jpg"))) == (".jpg") ||str.substrin

VintaSoft Barcode.NET SDK专业的条形码读写控件详细介绍

VintaSoftBarcode.NET SDK是专业的.NET条形码阅读器和条码生成器控件,可以嵌入到你软件开发中.它可以读写数字图形和PDF中的的一维和二维条码控件. VintaSoftBarcode.NET SDK有三个不同的版本:标准版,标准+ WPF版或Silverlight版. 功能和特征 开发环境:NET Framework 2.0或更高版本,WPF 3.5或更高版本的Silverlight4.0.纯.NET托管代码, 速度更快.可生成条码图像和矢量格式的条形码可指定条形码图像的大