是否有人成功地从专门针对 SharePoint 2013 的新建或编辑表单中获取用户(个人或组)字段的值?
我已经尝试了通过搜索互联网找到的所有解决方案以及我自己能想到的所有解决方案,所有结果都为空白或未定义。
我得到的最接近的是以下链接,如果有人感兴趣,后者可以设置该值,但我无法成功地调整它来检索该值。
http://www.sharepointcolumn.com/sp2013-setting-people-picker-value-in-newform-aspx/
我的目标是仅当该值为空时才设置该值,但我无法获取当前值。
在 DOM 中查看,有许多 HTML 元素具有包含值的属性,但使用 JQuery 检索这些属性会导致空白或未定义。我已确认我拥有带有 title 或 id 属性的正确对象。有一个 HTML 元素,其中 title 属性具有值,但在该特定情况下 JQuery 仍然返回空白或未定义。
感谢您提供的任何帮助。
最佳答案
由于您使用的是 SharePoint 2013,我建议您考虑以下方法。在 SharePoint 2013 中引入了所谓的 Client Rendering Mode (CSR)
它用于使用 HTML 和 JavaScript 渲染 ListView 和表单,并且是默认渲染模式。
如何使用 CSR 初始化新建/编辑表单中的用户字段
下面的示例演示了如何在新建和编辑表单中初始化用户字段(任务列表中的AssignedTo
字段):
Note: it is assumed the user field is a multi-valued field
模板代码:
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
Templates: {
Fields: {
"AssignedTo": {
EditForm: renderAssignedTo,
NewForm: renderAssignedTo
}
}
}
});
});
function renderAssignedTo(ctx)
{
var defaultAssigneeTo = {'LoginName': 'i:0#.f|membership|jdoe@contoso.onmicrosoft.com','DisplayName':'John Dow' };
if(ctx.CurrentFieldValue.length == 0) /* Is user field value empty? */
{
var userEntry = createUserEntity(defaultAssigneeTo.LoginName,defaultAssigneeTo.DisplayName);
ctx.CurrentFieldValue = []; //Note: it is assumed the user field is a multi-valued field (!)
ctx.CurrentFieldValue.push(userEntry);
}
return SPClientPeoplePickerCSRTemplate(ctx);
}
function createUserEntity(loginName,displayName)
{
return {
Description: loginName,
DisplayText: displayName,
EntityGroupName: "",
EntityType: "",
HierarchyIdentifier: null,
IsResolved: true,
Key: loginName,
MultipleMatches: [],
ProviderDisplayName: "",
ProviderName: ""
};
}
如何应用更改
至少有两种应用更改的选项:
- 使用 JSLink property
- 通过
Script Editor
将 JavaScript 模板放置在页面上/Content Editor
网络部件
以下是如何使用第二个选项应用更改:
- 将页面 (
NewForm.aspx
) 切换到编辑模式 - 添加
Script Editor
Web 部件位于 ListView Web 部件正下方。 - 通过使用
script
包装指定的代码来放置它将代码标记到脚本编辑器中,例如:<script type="text/javascript">{Template JS code goes here}</script>
- 保存页面
结果
图1.新建表单页面
引用文献
关于javascript - SharePoint 2013 JavaScript 从用户(人员)字段获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219073/