この記事は、Office 365 Advent Calendar 2017 に参加しています。
Office 365 Advent Calendar 2017
https://adventar.org/calendars/2585
SharePoint Server 2013 以降や、SharePoint Online の “クラシック UI” のリストで利用できる JS リンクを使って、列に入力された値に応じて行の色を変える方法です。
JS リンクの OnPostRender を利用する方法でイルミネート・ジャパン・ブログさんに記事がありますが、こちらのサンプルではリストのクイック編集モードに対応していないようでしたので、クイック編集モードに対応するように少しだけ書き足してみました。
[SharePoint Online/SharePoint Server 2013] JS リンクでリストビューに条件付き書式設定 | イルミネート・ジャパン ブログ
https://crieilluminate.wordpress.com/2016/01/26/sharepoint-onlinesharepoint-server-2013-js-%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%A7%E3%83%AA%E3%82%B9%E3%83%88%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AB%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E6%9B%B8%E5%BC%8F/
とは言っても、ほんの数行書き足しただけです。
さっそくコード
(function () {
var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.OnPostRender = Condition;
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();
function Condition(ctx){
var trElement,rowId;
for (i = 0; i < ctx.ListData.Row.length; i++) {
if (ctx.ListData.Row[i]["FieldName"]) {
if (ctx.ListData.Row[i]["FieldName"].indexOf("Value") != -1) {
rowId = GenerateIIDForListItem(ctx, ctx.ListData.Row[i]);
if(!ctx.inGridMode){
trElement = document.getElementById(rowId);
}else{
// クイック編集時の tr を取得するには iid を利用
trElement = document.querySelector('[iid="' + rowId + '"]');
}
if(trElement != null){
trElement.style.backgroundColor = "#ffe0e0";
}
}
}
}
}
FieldName
や、indexOf("Value")
のところは、列名や要件に応じて書き換えてください。
うまく動くと下図のようになります。
クイック編集モードに切り替えるとこんな感じに。
この例では、「重要度」列が「高」のときに行の背景色を変えてみています。
さいごに
SharePoint Online では、”モダン UI” のリストの機能が強化され Column formatting が利用できるようになっていますが、まだまだオンプレミスを含め “クラシック UI” のリストを利用されることも多いかと思います。その時にはまだまだ JS リンクでのカスタマイズはお世話になりますよね。
Office 365 Advent Calendar 2017 の 12 月 8 日分の投稿でした。
Office 365 Advent Calendar 2017
https://adventar.org/calendars/2585
と、いうわけでッ!Office 365 Advent Calendar 2017 にはまだまだ空きがあります!参加したい!という方が居ましたら空いている日をポチっとお願いしますー。