質問

私はGUIDを含むリストビューを持っています。ここでは、JSlinkのonprerender関数で行われたREST呼び出しの結果に応じて、一部の項目を除外します。RESTコールは別のリストからGUIDを取得し、それらが現在のリスト内のものと一致した場合は、アイテムをレンダリングして表示します。しかし、そうでなければ、アイテムがまったく表示されたくない、それは削除されるべきです。これは可能ですか?

私はContextInfoを操作しようとしたことが私が望んでいなかったアイテムを削除しましたが、それはエラーを引き起こしました。

では、特定のフィールドの値だけでなく、リストビューから行全体を削除することです。

役に立ちましたか?

解決

オプション1.リストビューの行を削除する方法

次の例では、クライアント側のレンダリングを介して行を削除する方法を示しています。

(function () {


   function listPreRender(renderCtx) {

         var excludeRows = [0,2,3];  //row idexes to be excluded

         var rows = renderCtx.ListData.Row; //get current rows
         for(var i = excludeRows.length - 1; i >= 0; i--) {
            var rowIdx = excludeRows[i];  //get row index to exclude 
            rows.splice(rowIdx, 1);  //delete List View Row
            renderCtx.ListData.LastRow = rows.length;  //update ListData.LastRow property
         }        
   }


    function registerListRenderer()
    {
       var context = {};
       context.Templates = {};
       context.OnPreRender = listPreRender;

       SPClientTemplates.TemplateManager.RegisterTemplateOverrides(context);
    } 
    ExecuteOrDelayUntilScriptLoaded(registerListRenderer, 'clienttemplates.js');

})();
.

オプション2.リストビューで行を非表示にする方法
(function () {

   var excludeRows = [0,2,3];

    function renderListItemTemplate(renderCtx) {
        if(excludeRows.indexOf(renderCtx.CurrentItemIdx) > -1)
        {
           return ''; //do not render row
        }
        return RenderItemTemplate(renderCtx); 
    }


    function registerListRenderer()
    {
       var context = {};
       context.Templates = {};
       context.Templates.Item = renderListItemTemplate;

       SPClientTemplates.TemplateManager.RegisterTemplateOverrides(context);
    } 
    ExecuteOrDelayUntilScriptLoaded(registerListRenderer, 'clienttemplates.js');

})();
.

結果

オリジナルリストビュー

画像の入力ここにある

画像の説明がここにある

他のヒント

レンダリング機能にIFステートメントを追加する必要があります。のようなもの

function CustomItem(ctx) {
 var ret = '';
 if ($.inArray(ctx.CurrentItem.GUID, ArrayOfGUIDs) != -1) {
  ret = '<div>' + ctx.CurrentItem.Title + '</div>';
 }
 return ret;
}
.

この例では、GUIDが存在するかどうかを確認するためにjQuery関数を使用しましたが、jQueryがない場合は代替比較を使用しています。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top