我在 SharePoint 2013 中工作,并且为内容搜索 Web 部件创建了一个自定义显示模板。我的三个字段使用多选人员选择器,所有三个字段都在一个字符串中返回名称,如下所示:
布朗、约翰史密斯、迈克琼斯、玛丽
我想以下面显示的格式返回名称,但我似乎无法让它工作:
布朗,约翰;史密斯,迈克;琼斯,玛丽
我已经尝试了这些博客文章中的建议:
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>
显示应如下所示:
布朗,约翰;史密斯,迈克;琼斯,玛丽
这是regulatorypartner的输出:
布朗、约翰史密斯、迈克琼斯、玛丽
这是 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;
}