【问题标题】:Filter data with JSLink Sharepoint使用 JSLink Sharepoint 过滤数据
【发布时间】:2015-05-15 17:13:34
【问题描述】:

我使用 JSLink 自定义 SharePoint 显示列表。

如您在以下链接中所见,我设法过滤了数据:

https://sharepoint.stackexchange.com/questions/91317/filter-out-items-in-list-view-using-jslink

当我再次点击列标题尝试过滤数据时,它会系统地带回所有旧数据,而不是整理出之前过滤的数据。

【问题讨论】:

    标签: javascript sharepoint sharepoint-2013 jslink


    【解决方案1】:

    在提供的示例中,过滤器是按行索引应用的,这解释了为什么在应用排序之前和之后显示不同的行。

    以下示例演示了如何通过列表项 id 隐藏行,在这种情况下,过滤器将一致地应用于相同的行:

    (function () {
    
       function listPreRender(renderCtx) {
    
             var excludeItemIds = [1];  //hide list item with Id=1
    
             var rows = renderCtx.ListData.Row; //get current rows
             var filteredRows = rows.filter(function(row){
                var curItemId = parseInt(row.ID); 
                if(excludeItemIds.indexOf(curItemId) === -1)
                    return row;                
             });
    
             renderCtx.ListData.Row = filteredRows;
             renderCtx.ListData.LastRow = filteredRows.length;  //update ListData.LastRow property
       }
    
    
        function registerListRenderer()
        {
          SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
              Templates : {
                OnPreRender : listPreRender
              }
          });
        } 
        ExecuteOrDelayUntilScriptLoaded(registerListRenderer, 'clienttemplates.js');
    
    })();
    

    结果

    过滤列表视图

    应用排序后的过滤列表视图

    【讨论】:

    • 感谢您的回答,我的数据已正确过滤,但问题是在应用排序或过滤后,就像我们在屏幕截图中看到的那样:hostingpics.net/viewer.php?id=151851JSlink.png 总是显示旧数据......并且计数是也错了。
    猜你喜欢
    • 2012-11-18
    • 2017-10-06
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2019-07-20
    • 2019-12-30
    相关资源
    最近更新 更多