我有一些脚本,我一直在努力在一个 Sharepoint 2013
列表,它基本上是根据列表检查一些标准,然后返回 "待处理"、"完成"、"逾期 "或 "错过到期日"。
为了对照当前日期进行检查,我使用了一些在网上找到的Java脚本,并将其修改为适用于我的列表。唯一的问题是,我也在尝试给文本着色。
如果数值是 "逾期",则为红色。
如果数值为 "完成",则为绿色
其他情况为黑色。
代码正确地返回值,并将 "完成 "值显示为绿色,但我无法将 "逾期 "值显示为红色。
这是我的代码。
="<div style='text-align:left; color:"
&IF([Completed Date]="",""
&"<img src='/_layouts/images/blank.gif' onload=""{"
&"var SPday=new Date();"
&"SPday.setFullYear("&YEAR(DueDate)&","&MONTH(DueDate)-1&","&DAY(DueDate)&");"
&"var Days=Math.round((SPday.getTime()-new Date().getTime())/86400000);"
&"this.parentNode.innerHTML=((Days<0)?'red':'black');"
&"}"""
&"","green")
&"'>"
&IF([Completed Date]="",IF(ISBLANK(DueDate),"Missing Due date","<img src='/_layouts/images/blank.gif' onload=""{"
&"var SPday=new Date();"&"SPday.setFullYear("&YEAR(DueDate)&","&MONTH(DueDate)-1&","&DAY(DueDate)&");"
&"var Days=Math.round((SPday.getTime()-new Date().getTime())/86400000);"
&"this.parentNode.innerHTML=((Days<0)?'Overdue':'Pending');"
&"}"">"),"Complete")
&"</div>"
可以这样做吗? 或者我应该尝试其他方法?
对于这样复杂的逻辑,你最好使用CSR。
(function () {
'use strict';
var CustomCtx = {};
/**
* Initialization
*/
function init() {
CustomCtx.Templates = {};
CustomCtx.Templates.Fields = {
// update ChangeCompleted as your filed static name
'ChangeCompleted': {
'View': customDisplay
}
};
// Register the custom template
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(CustomCtx);
}
/**
* Rendering template
*/
function customDisplay(ctx) {
//your logic here
}
// Run our intiialization
init();
})();
链接供你参考。
https:/www.codeproject.comArticles620110SharePoint-Client-Side-Rendering-List-Views