如何在 SharePoint 2013 中将人员选取器列设置为只读

How to make People Picker column Read only in SharePoint 2013

我正在尝试在我的列表编辑表单 "Read-only" 中创建 人员选择器列 。我找到了许多适用于 SharePoint 2010 的解决方案,但找不到适用于 SharePoint 2013/Office 365.

的可靠解决方案

如果有人能指出我一个好的解决方案,那就太好了。

要使人员选择器只读,您可以使用以下 JQuery 代码:

$(".sp-peoplepicker-delImage").css({ 'display' : 'none'});
$(".sp-peoplepicker-editorInput").css({ 'display' : 'none'});

您也可以在 css 的帮助下应用它们:

<style>

.sp-peoplepicker-delImage{

display:none;

}
.sp-peoplepicker-editorInput{

display:none;

}

</style>

这是使人员选择器字段在 SharePoint 中只读的最简单和最快的方法

2013/online,但它会使表单上的每个人员选择器字段变为只读。所以请让

我知道您是否需要特定的专栏。

由于在 SharePoint 2013 中引入了一个基于 JavaScript/HTML 的新客户端呈现引擎(称为 CSR)来呈现列表表单,因此我推荐以下方法。自定义编辑表单以便使用显示模式在编辑表单中呈现人员选取器,如下所述。

步骤

1) 创建一个 JavaScript 模板以在显示模式下呈现人物选择器:

SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {

    SPClientTemplates.TemplateManager.RegisterTemplateOverrides({

      Templates: {

           Fields: {
               "AssignedTo": {
                   EditForm: renderAssignedTo
               }
           }
      }

    });
});


function renderAssignedTo(ctx) {
    var item = ctx['CurrentItem']; 
    var userField = item[ctx.CurrentFieldSchema.Name]; 
    var fieldValue = ""; 

    for (var i = 0; i < userField.length; i++) { 
        fieldValue += userField[i].EntityData.SPUserID + SPClientTemplates.Utility.UserLookupDelimitString + userField[i].DisplayText; 

        if ((i + 1) != userField.length) { 
            fieldValue += SPClientTemplates.Utility.UserLookupDelimitString 
        } 
    } 

    ctx["CurrentFieldValue"] = fieldValue;   
    return SPFieldUserMulti_Display(ctx);   
}

2)在编辑模式下打开编辑表单页面

3)在页面上放置 Script Editor web 部件,并通过使用 script 标记

将其括起来插入指定的模板

就是这样。

结果 ¨