0

SharePoint 2013 で作業しており、コンテンツ検索 Web パーツ用のカスタム表示テンプレートを作成しました。私のフィールドの 3 つは複数選択の人物ピッカーを使用しており、以下に示すように 3 つすべてが 1 つの文字列で名前を返しています。

ブラウン、ジョン・スミス、マイク・ジョーンズ、メアリー

以下に示す形式で名前を返したいのですが、それを機能させることができないようです:

ブラウン、ジョン。スミス、マイク。ジョーンズ、メアリー

これらのブログ記事からのアドバイスを試しました。

https://social.msdn.microsoft.com/Forums/en-US/ea0fe2fe-0757-4c1c-b3cc-2dd99b38bfa1/sharepoint-2013-custom-display-template-people-picker-field-separate-multiple-names- in-display?forum=sharepointdevelopment

https://sharedpointtips.blogspot.com/2015/01/sharepoint-2013-display-template.html

http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2014/02/26/useful-javascript-for-working-with-sharepoint-display-templates-spc3000-spc14.aspx

最初の記事に含まれているすべての提案を試しました - https://social.msdn.microsoft.com/Forums/en-US/ea0fe2fe-0757-4c1c-b3cc-2dd99b38bfa1/sharepoint-2013-custom-display-template -people-picker-field-separate-multiple-names-in-display?forum=sharepointdevelopment

ヘッダーで:

'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;
}
4

1 に答える 1