【发布时间】:2015-06-29 19:12:28
【问题描述】:
我正在尝试在我的列表编辑表单“只读”中设置人员选择器列。我找到了许多适用于 SharePoint 2010 的解决方案,但找不到适用于 SharePoint 2013/Office 365 的可靠解决方案。
如果有人能指出一个好的解决方案,那就太好了。
【问题讨论】:
我正在尝试在我的列表编辑表单“只读”中设置人员选择器列。我找到了许多适用于 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 模板,用于在显示模式下呈现 People Picker:
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 标记将其括起来插入指定的模板
就是这样。
结果 ¨
【讨论】: