SharePoint 2013 - 需要从多人 Select 人物选择器中拆分姓名
SharePoint 2013 - Need to Split Names from a Multi-Select People Picker
我在 SharePoint 2013 中工作,我已经为内容搜索 Web 部件创建了自定义显示模板。我的三个字段使用多个 select 人员选择器,所有三个字段都 return 在一个字符串中输入姓名,如下所示:
布朗、约翰史密斯、迈克琼斯、玛丽
我想 return 以下格式的名称,但我似乎无法让它工作:
布朗,约翰;史密斯,迈克;琼斯,玛丽
我已经尝试了这些博客文章中的建议:
https://sharedpointtips.blogspot.com/2015/01/sharepoint-2013-display-template.html
在页眉中:
'Response Preparer'{Response Preparer}:'ResponsePreparerOWSUSER'
正文中:
<script>
$includeLanguageScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Language Files/{Locale}/CustomStrings.js");
$includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Search/jquery-1.11.3.min.js");
$includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Search/splitNames.js");
RegisterSod('jquery-1.11.3.min.js', Srch.U.replaceUrlTokens("~sitecollection/_catalogs/masterpage/Display Templates/Search/jquery-1.11.3.min.js"));
RegisterSod('splitNames.js', Srch.U.replaceUrlTokens("~sitecollection/_catalogs/masterpage/Display Templates/Search/splitNames.js"));
//Register Dependencies
RegisterSodDep('splitNames.js', 'jquery-1.11.3.min.js');
AddPostRenderCallback(ctx, function () {
EnsureScriptFunc("splitNames.js", 'splitNames', function() {
var regulatorypartner = $getItemValue(ctx, "Regulatory Partner");
var splitregpartner = "";
splitregpartner = $splitNames(regulatorypartner);
});
});
</script>
在 JavaScript 部分我试过这个:
var regulatorypartner = ctx.RegulatoryPartnerOWSUSER;
var splitregpartner = splitNames(regulatorypartner);
这是我的显示代码:
<td rowspan="2" colspan="4" style="text-align:center; border:0.5px solid #F88007;"> _#= splitregpartner =#_ </td>
显示应如下所示:
布朗,约翰;史密斯,迈克;琼斯,玛丽
这是监管合作伙伴的输出:
布朗、约翰史密斯、迈克琼斯、玛丽
这里是 splitNames 代码(文件包含在 RegisterSod 语句中):
var newStr="";
for(var i=0;i<str.length;i++){
var char=str.charAt(i);
if(char==char.toUpperCase()){
newStr+=" "+char ;
}else{
newStr+=char;
}
}
return newStr;
}
请记住,对于名字中有超过 2 个大写字母的人来说,它是行不通的,没有办法写出适用于所有情况并转换为您正在寻找的格式的东西除非您为多个单词和唯一名称添加示例。
to_ReadableFormat("Brown, JohnSmith, MikeJones, Mary");
function to_ReadableFormat(regulatorypartner){
var counter = 0;
var fullString = "";
regulatorypartner.match(/[A-Z]/g).map(function (cap) { // loop through all the capitals
let regIndex = regulatorypartner.indexOf(cap);
if (counter != 0 && counter % 2 == 0) {
fullString += regulatorypartner.slice(0, regIndex) + ";";
regulatorypartner = regulatorypartner.slice(regIndex, regulatorypartner.length);
}
counter++;
});
fullString += regulatorypartner; // concat the remaining
return fullString;
}
我在 SharePoint 2013 中工作,我已经为内容搜索 Web 部件创建了自定义显示模板。我的三个字段使用多个 select 人员选择器,所有三个字段都 return 在一个字符串中输入姓名,如下所示:
布朗、约翰史密斯、迈克琼斯、玛丽
我想 return 以下格式的名称,但我似乎无法让它工作:
布朗,约翰;史密斯,迈克;琼斯,玛丽
我已经尝试了这些博客文章中的建议:
https://sharedpointtips.blogspot.com/2015/01/sharepoint-2013-display-template.html
在页眉中:
'Response Preparer'{Response Preparer}:'ResponsePreparerOWSUSER'
正文中:
<script>
$includeLanguageScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Language Files/{Locale}/CustomStrings.js");
$includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Search/jquery-1.11.3.min.js");
$includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Search/splitNames.js");
RegisterSod('jquery-1.11.3.min.js', Srch.U.replaceUrlTokens("~sitecollection/_catalogs/masterpage/Display Templates/Search/jquery-1.11.3.min.js"));
RegisterSod('splitNames.js', Srch.U.replaceUrlTokens("~sitecollection/_catalogs/masterpage/Display Templates/Search/splitNames.js"));
//Register Dependencies
RegisterSodDep('splitNames.js', 'jquery-1.11.3.min.js');
AddPostRenderCallback(ctx, function () {
EnsureScriptFunc("splitNames.js", 'splitNames', function() {
var regulatorypartner = $getItemValue(ctx, "Regulatory Partner");
var splitregpartner = "";
splitregpartner = $splitNames(regulatorypartner);
});
});
</script>
在 JavaScript 部分我试过这个:
var regulatorypartner = ctx.RegulatoryPartnerOWSUSER;
var splitregpartner = splitNames(regulatorypartner);
这是我的显示代码:
<td rowspan="2" colspan="4" style="text-align:center; border:0.5px solid #F88007;"> _#= splitregpartner =#_ </td>
显示应如下所示:
布朗,约翰;史密斯,迈克;琼斯,玛丽
这是监管合作伙伴的输出:
布朗、约翰史密斯、迈克琼斯、玛丽
这里是 splitNames 代码(文件包含在 RegisterSod 语句中):
var newStr="";
for(var i=0;i<str.length;i++){
var char=str.charAt(i);
if(char==char.toUpperCase()){
newStr+=" "+char ;
}else{
newStr+=char;
}
}
return newStr;
}
请记住,对于名字中有超过 2 个大写字母的人来说,它是行不通的,没有办法写出适用于所有情况并转换为您正在寻找的格式的东西除非您为多个单词和唯一名称添加示例。
to_ReadableFormat("Brown, JohnSmith, MikeJones, Mary");
function to_ReadableFormat(regulatorypartner){
var counter = 0;
var fullString = "";
regulatorypartner.match(/[A-Z]/g).map(function (cap) { // loop through all the capitals
let regIndex = regulatorypartner.indexOf(cap);
if (counter != 0 && counter % 2 == 0) {
fullString += regulatorypartner.slice(0, regIndex) + ";";
regulatorypartner = regulatorypartner.slice(regIndex, regulatorypartner.length);
}
counter++;
});
fullString += regulatorypartner; // concat the remaining
return fullString;
}