我正在使用自定义列表设置项目仪表板。这一切都在浏览器中,我相信这是 2007 年,但我不知道如何确定。其中一列是“项目红绿灯”。该字段是一个超链接,在描述中是指向绿色、黄色或红色圆圈图像的链接,以表示项目的状态。创建新项目时,用户将相应的超链接复制并粘贴到超链接字段中,以表示显示的是哪个图像。我需要一种通过红绿灯进行排序的方法(所有绿色、黄色和红色项目组合在一起)。有人对我如何实现这一点有任何想法吗?
问问题
481 次
2 回答
0
我终于想出了怎么做。本质上,我创建了两列:项目状态 (I) 和项目状态 (S)(第一个代表图像,第二个代表字符串)。项目状态 (I) 列根据用户在创建新项目时在项目状态 (S) 类别中选择的内容显示图像。这是使用计算列(项目状态 (I))和以下代码公式完成的:
=IF([Project Status (String)]="Green","<DIV><img src='/Site%20Pictures/grn.jpg'/></DIV>",IF([Project Status (String)]="Yellow","<DIV><img src='/Site%20Pictures/yel.jpg'/></DIV>",IF([Project Status (String)]="Red","<DIV><img src='/red.jpg'/></DIV>","Error")))
本质上,这是一个 HTML 脚本,如果满足正确的条件(即,如果项目状态 (S) = 绿色等),它会从互联网上提取图像。但是,SharePoint 不会在计算列中呈现 HTML 脚本。如果您创建一个显示代码而不是图片的新视图,您会注意到。为了获取图片,必须在网页中嵌入 JavaScript。这是通过创建内容编辑器 Web 部件、编辑源代码并粘贴以下代码来完成的:
<script type="text/javascript">
//
// Text to HTML
// Feedback and questions: Christophe@PathToSharePoint.com
//
var theTDs = document.getElementsByTagName("TD");
var i=0;
var TDContent = " ";
while (i < theTDs.length) {
try {
TDContent = theTDs[i].innerText || theTDs[i].textContent;
if ((TDContent.indexOf("<DIV") == 0) && (TDContent.indexOf("</DIV>") >= 0)) {
theTDs[i].innerHTML = TDContent;
}
}
catch(err){}
i=i+1;
}
//
// ExpGroupRenderData overwrites the default SharePoint function
// This part is needed for collapsed groupings
//
function ExpGroupRenderData(htmlToRender, groupName, isLoaded) {
var tbody=document.getElementById("tbod"+groupName+"_");
var wrapDiv=document.createElement("DIV");
wrapDiv.innerHTML="<TABLE><TBODY id=\"tbod"+ groupName+"_\" isLoaded=\""+isLoaded+ "\">"+htmlToRender+"</TBODY></TABLE>";
var theTBODYTDs = wrapDiv.getElementsByTagName("TD"); var j=0; var TDContent = " ";
while (j < theTBODYTDs.length) {
try {
TDContent = theTBODYTDs[j].innerText || theTBODYTDs[j].textContent;
if ((TDContent.indexOf("<DIV") == 0) && (TDContent.indexOf("</DIV>") >= 0)) {
theTBODYTDs[j].innerHTML = TDContent;
}
}
catch(err){}
j=j+1;
}
tbody.parentNode.replaceChild(wrapDiv.firstChild.firstChild,tbody);
}
</script>
此代码是从互联网上复制的。我不是自己写的。从审查来看,它似乎比它需要的要复杂得多,但只要你的 HTML 被 包围,它就可以工作,它会将 HTML 转换成它应该看起来的样子。
于 2013-05-28T23:18:47.680 回答
-1
您可以创建另一个计算列,并根据超链接字段中的图像值,您可以在该计算字段中设置文本状态。完成后,您可以轻松地按该列进行排序或分组。
于 2013-05-21T11:07:53.500 回答