更改SharePoint列表行的颜色

时间:2015-04-21 13:50:50

标签: javascript sharepoint sharepoint-2010 sharepoint-2013

我正在尝试编写一些javascript,以便能够从SharePoint列表的一列中读取日期。例如,如果在我的日期列(MonthNeeded)中日期是03/15,我希望能够检查日期是否为<从今天起30天或从今天起约90天,依此类推。当它检查它时,它将改变与该日期对应的行颜色某种颜色。从今天起不到30天,它将是红色,大于或等于30天,它将是橙色等...

我在Visual Studio中编写了一些代码,因为遗憾的是我不能将SharePoint设计器与我的SP实例一起使用,所以我无法实时测试代码。

这是我到目前为止所做的:

function CheckStatus() {
    var x = document.getElementsByTagName("TD") // find all of the TDs
    var _dueDate = new Date(ctx.CurrentItem.MonthNeeded)
    var now = Date();
    var nowPlus30 = new Date();
    nowPlus.setDate(now.getDate() + 30);

    var nowPlus90 = new Date();
    nowPlus.setDate(now.getDate() + 90);

    if (_dueDate == '' || !_dueDate) {
        return '';
    }
    var i = 0;
    for (i = 0; i < x.length; i++) {

        if (x[i].className == "ms-vb2") //find the TDs styled for lists
        {

            if( _dueDate <= nowPlus30 ) //find the data to use to determine the color
            {
                x[i].parentNode.style.backgroundColor = 'orange'; // set the color
            }

            //repeat the above for each data value

            if (_dueDate <= nowPlus90) {
                x[i].parentNode.style.backgroundColor = 'yellow'; // set the color
            }

            if (_dueDate > nowPlus30) {
                x[i].parentNode.style.backgroundColor = 'red'; // set the color
            }


        }

    }
}

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

我过去使用过date.js库来进行条件格式化,请参阅:http://code.google.com/p/datejs/

以下是我的代码片段:

var created = oListItem.get_item('Created').toLocaleDateString();
var dateCreated = Date.parse(created);
var lastWeek = Date.today().add(-7).days();
var newIcon = '';
if (dateCreated >= lastWeek) {
      newIcon = "<span class='newIcon'> new!</span>";
}

答案 1 :(得分:0)

您的代码无法正常运行,因为您的JS中存在一些小错误。

首先,检查 nowPlus 是否未定义,但是您尝试使用它,并且该函数会中断,抛出异常。

在设置日期加30天和90天时,您应该使用 nowPlus30 nowPlus90

另外,请检查以下行:

var now = Date();

您需要将以上行替换为:

var now = new Date();

由于Date是一个需要在使用之前进行初始化的JS对象。

请查看以下小提琴,以供参考:)

http://jsfiddle.net/canolucas/gmw9tr5h/