更改共享点中特定文本的颜色文本
Change color text of specific text in sharepoint
我正在做一些测试(问题跟踪)并且我启动了一个工作流,一个三态工作流。工作流显示为已完成或正在进行。我可以更改单词的颜色吗?例如,进行中的是橙色,完成的是绿色。
请指教
如果您在主页选项卡下使用 spreadsheet/excel,那里有字体组,您会看到一个带有字母 A 的图标,并用粗体颜色下划线通常为红色或黑色,表示用于更改特定文本或所有文本颜色的字体颜色选项。
如果你想要一个简单的解决方案。你将有两个改变两件事。
首先,HTML 文件。如果 table 还没有 ID,则需要添加一个 ID。
其次,您必须添加以下 javascript.
它的作用是:
加载页面时,它将获取我们提到的带有 Id 的 table 中的每个第二个单元格。然后它获取单元格的值并匹配颜色对象的属性之一。
最后它会将该颜色应用到文本
$(document).ready(function(){
var indexOfColumn = 2;
var colors = {"A": "red", "B B": "green", "C.C": "yellow"};
$("#someID tbody tr td:nth-child("+ indexOfColumn +")").each(function(key, value){
$(value).css("color", colors[$(value).text()])
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="someID">
<tr><td>1</td><td>A</td></tr>
<tr><td>2</td><td>B B</td></tr>
<tr><td>3</td><td>C.C</td></tr>
<tr><td>4</td><td>A</td></tr>
</table>
老实说,我还没有用工作流的默认列尝试过这个,但你可以创建一个状态字段,例如'Status' 在你的列表中,它根据你的工作流状态更新,即当工作流正在进行时,将字段值设置为 'In Progress' 并且在工作流成功完成之前,将其更新为 'Completed' 然后使用JS link:
(function () {
var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.OnPostRender = [];
overrideCtx.Templates.Fields =
{
'Status': { 'View': ChangeColor }
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();
function ChangeColor(ctx){
var val = ctx.CurrentItem["Status"];
if (val == "In Progress")
{
return "<span style='color: orange'>" + val + "</span>";
}
else {
return "<span style='color: green'>" + val + "</span>";
}
}
把上面的代码放在一个js文件里,然后放到某个地方,比如在样式库中。然后,您可以通过配置列表视图 Web 部件并提供文件的服务器相对 url 来引用此文件。
希望这有帮助。
在SharePoint 2013中,我们可以在脚本编辑器web部件中添加如下代码来实现。
<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function (ctx) {
$("td.ms-vb2>a>span").each(function(){
if($(this).text()=="In Progress"){
$(this).css("color","orange");
}
if($(this).text()=="Completed"){
$(this).css("color","green");
}
});
$("td.ms-vb2").each(function(){
if($(this).text()=="Closed"){
$(this).css("color","red");
}
if($(this).text()=="Active"){
$(this).css("color","green");
}
});
}
});
});
</script>
我正在做一些测试(问题跟踪)并且我启动了一个工作流,一个三态工作流。工作流显示为已完成或正在进行。我可以更改单词的颜色吗?例如,进行中的是橙色,完成的是绿色。
请指教
如果您在主页选项卡下使用 spreadsheet/excel,那里有字体组,您会看到一个带有字母 A 的图标,并用粗体颜色下划线通常为红色或黑色,表示用于更改特定文本或所有文本颜色的字体颜色选项。
如果你想要一个简单的解决方案。你将有两个改变两件事。 首先,HTML 文件。如果 table 还没有 ID,则需要添加一个 ID。 其次,您必须添加以下 javascript.
它的作用是: 加载页面时,它将获取我们提到的带有 Id 的 table 中的每个第二个单元格。然后它获取单元格的值并匹配颜色对象的属性之一。 最后它会将该颜色应用到文本
$(document).ready(function(){
var indexOfColumn = 2;
var colors = {"A": "red", "B B": "green", "C.C": "yellow"};
$("#someID tbody tr td:nth-child("+ indexOfColumn +")").each(function(key, value){
$(value).css("color", colors[$(value).text()])
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="someID">
<tr><td>1</td><td>A</td></tr>
<tr><td>2</td><td>B B</td></tr>
<tr><td>3</td><td>C.C</td></tr>
<tr><td>4</td><td>A</td></tr>
</table>
老实说,我还没有用工作流的默认列尝试过这个,但你可以创建一个状态字段,例如'Status' 在你的列表中,它根据你的工作流状态更新,即当工作流正在进行时,将字段值设置为 'In Progress' 并且在工作流成功完成之前,将其更新为 'Completed' 然后使用JS link:
(function () {
var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.OnPostRender = [];
overrideCtx.Templates.Fields =
{
'Status': { 'View': ChangeColor }
};
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();
function ChangeColor(ctx){
var val = ctx.CurrentItem["Status"];
if (val == "In Progress")
{
return "<span style='color: orange'>" + val + "</span>";
}
else {
return "<span style='color: green'>" + val + "</span>";
}
}
把上面的代码放在一个js文件里,然后放到某个地方,比如在样式库中。然后,您可以通过配置列表视图 Web 部件并提供文件的服务器相对 url 来引用此文件。 希望这有帮助。
在SharePoint 2013中,我们可以在脚本编辑器web部件中添加如下代码来实现。
<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function (ctx) {
$("td.ms-vb2>a>span").each(function(){
if($(this).text()=="In Progress"){
$(this).css("color","orange");
}
if($(this).text()=="Completed"){
$(this).css("color","green");
}
});
$("td.ms-vb2").each(function(){
if($(this).text()=="Closed"){
$(this).css("color","red");
}
if($(this).text()=="Active"){
$(this).css("color","green");
}
});
}
});
});
</script>