4

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

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

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

提前致谢。

这是我当前的 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";

            }
        }       

    }
}

);

4

2 回答 2

1

因此,经过大量调查,事实证明我的格式在排序或过滤发生后的最后一秒被覆盖。

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

于 2015-06-30T11:38:15.030 回答
-1

我建议检查jquery.tablesorter.js,这将保留您的样式。在您的情况下,订购在客户端,所以您必须在那里解决它。您可以将其应用于简单的表格,并添加一个简短的 js:

$(document).ready(function() 
    { 
        $("#myTable").tablesorter(); 
    } 
);
于 2015-06-04T12:31:00.433 回答