Jquery Sharepoint 2013-编辑表单,人员选择器新值未保存
我使用了下面的代码来增加people picker的价值。代码在NewForm.aspx中运行良好。但是当我在EditForm.aspx中编辑人员选择器时,它不接受新值。它只保存旧值Jquery Sharepoint 2013-编辑表单,人员选择器新值未保存,jquery,sharepoint,sharepoint-2013,Jquery,Sharepoint,Sharepoint 2013,我使用了下面的代码来增加people picker的价值。代码在NewForm.aspx中运行良好。但是当我在EditForm.aspx中编辑人员选择器时,它不接受新值。它只保存旧值 function SetNewPeoplePicker(controlName, Username) { var ppDiv = jQuery("[id$='ClientPeoplePicker'][title='" + controlName + "']"); var ppEditor = ppDiv
function SetNewPeoplePicker(controlName, Username) {
var ppDiv = jQuery("[id$='ClientPeoplePicker'][title='" + controlName + "']");
var ppEditor = ppDiv.find("[title='" + controlName + "']");
var spPP = SPClientPeoplePicker.SPClientPeoplePickerDict[ppDiv[0].id];
ppEditor.val(Username); // Set the value
spPP.AddUnresolvedUserFromEditor(true); // Resolve the User if (!spPP.HasInputError)
{
var userKeys = spPP.GetAllUserInfo();
var myUser = userKeys[0];
Manager = myUser.AutoFillDisplayText;
}
spPP.SetEnabledState(false);
jQuery('a.sp-peoplepicker-delImage').hide();
}
我读到我们必须将Web部件属性更改为“服务器渲染”。但是整个UI都发生了变化,我用JS为其他字段编写的代码也失败了
可以提供任何解决方案。 < P>因为您使用SharePoint 2013,我建议您考虑以下方法。SharePoint 2013引入了一种所谓的
客户端呈现模式(CSR)
,用于使用HTML和JavaScript呈现列表视图和表单,这是一种默认呈现模式
如何使用CSR在新建/编辑表单中初始化用户字段
下面的示例演示如何在新建和编辑表单中初始化用户字段(AssignedTo
任务列表中的字段):
模板代码:
(function () {
var ctx = {};
ctx.Templates = {};
ctx.Templates.Fields = {
'AssignedTo': {
'NewForm': renderPeoplePickerWithDefaultValue,
'EditForm': renderPeoplePickerWithDefaultValue
}
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctx);
})();
function renderPeoplePickerWithDefaultValue(ctx) {
//1.set user field value
var loginName = String.format('i:0#.f|membership|{0}',_spPageContextInfo.userLoginName); //set to current user login name
var displayName = $('div#SuiteNavUserName').text(); //set to current user display name
var userEntry = createUserEntity(loginName,displayName);
ctx.CurrentFieldValue = []; //Note: it is assumed the user field is a multi-valued field (!)
ctx.CurrentFieldValue.push(userEntry);
//2.render default People Picker
return SPClientPeoplePickerCSRTemplate(ctx);
}
function createUserEntity(loginName,displayName)
{
return {
Description: loginName,
DisplayText: displayName,
EntityGroupName: "",
EntityType: "",
HierarchyIdentifier: null,
IsResolved: true,
Key: loginName,
MultipleMatches: [],
ProviderDisplayName: "",
ProviderName: ""
};
}
注意:在指定示例中,AssignedTo
字段设置为当前
用户,要指定其他用户,请修改loginName
和
displayName
参数
p.p.S.该示例已在SharePoint Online中进行了测试
如何应用更改
如何应用更改,至少有两个选项:
脚本编辑器
/内容编辑器
web部件NewForm.aspx
)切换到编辑模式脚本编辑器
web部件script
标记代码将指定的代码包装到脚本编辑器中,例如:{Template JS code go here}