在筛选 SharePoint 列表视图 Web 部件时尝试调用 Javascript 函数

Trying to call Javascript Function when SharePoint List View Web Part is filtered

我有一些 JavaScript 可以根据特定列中的值为 SharePoint 列表视图 Web 部件中的行着色。 这部分工作正常,页面加载时行的颜色正确。 我遇到的问题是,当列表被过滤时(如果您单击任何列 headers 并按升序或降序排列)格式丢失并且颜色消失。

我正在寻找一种在过滤操作完成后保留或重新应用格式的方法。 如果刷新页面,选择的过滤器将保留在原位,颜色将 return.

我需要一种在应用滤镜后重新应用颜色的方法,而不是仅在页面加载时重新应用颜色。

提前致谢。

这是我当前的 JS:

SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function(ctx) {
    var rows = ctx.ListData.Row;
    for (var i=0;i<rows.length;i++)
    {            
        var trimmed = rows[i]["Age"]
        var final = trimmed.replace(",", "");
        var oneWeek = final < 7;
        var oneToTwo = final >= 7 && final <= 14;
        var twoOrMore = final > 14;

        if (oneWeek)
            {
                var rowElementId = GenerateIIDForListItem(ctx, rows[i]);
                var tr = document.getElementById(rowElementId);
                tr.style.backgroundColor = "#CCFFCC";

            }

        else if (oneToTwo)
            {
                var rowElementId = GenerateIIDForListItem(ctx, rows[i]);
                var tr = document.getElementById(rowElementId);
                tr.style.backgroundColor = "#FFEECC";

            }

        else if (twoOrMore)
            {
                var rowElementId = GenerateIIDForListItem(ctx, rows[i]);
                var tr = document.getElementById(rowElementId);
                tr.style.backgroundColor = "#FFCCCC";

            }
        }       

    }
}

);

我建议检查 jquery.tablesorter.js,这将保持您的风格。 在您的情况下,订购是在客户端,因此您必须在那里解决。 简单的表格可以应用,加个短js:

$(document).ready(function() 
    { 
        $("#myTable").tablesorter(); 
    } 
);

经过大量调查,我发现我的格式在排序或过滤发生后的最后一秒被覆盖了。

解决方案是将其添加到代码末尾: ctx.skipNextAnimation = 真; 这跳过了显示所有行就位的动画,并允许我的格式正常生效。