最近有一個小需求,就是SharePoint的日歷類型列表,用戶希望根據Event里面的Category不同,在前台視圖顯示成不同的顏色,絞盡腦汁,想到這么個辦法,分享給大家,希望有更好方法的也能留言推薦給我。
效果,如下圖:
不一樣Category的Event,前台顯示的背景色不相同;
原理
通過分析日歷視圖的前台HTML,發現所有的Event都在一個div里面,而且div的class都是一樣的,所以,用JQuery獲取所有Event的div就比較容易了。
再深一層查看,div下面標題的鏈接,里面有Event的ID,通過js解析出來這個ID也不是什么難事兒,所以,根據ID用ECMAScript獲取這個Event的Category也變得可行,然后再把這個Event最外面的div背景顏色改變,即可。
根據ID的值用ECMAScript腳本去SharePoint日歷里讀取Category的值,然后根據值來將最外面的Div改變為相應的背景顏色,下面,即使用的js腳本,給大家一個參考。
優點
目前測試,完美支持增刪改后的異步加載,支持日視圖、周視圖、月視圖的各種切換,支持項目過多折疊的展開和收縮是發生的異步加載;
缺點
橘紅色為默認的顏色,由於ECMAScript腳本是異步的,所以改變會有一個漸變的效果,如下圖,可以看到改變是一個漸變的過程,不過也挺賞心悅目的,呵呵。
其他聲音
在做這個日歷的過程中,也看到一些其他解決方案,重寫日歷視圖就不提了;看到Erucy在SharePoint 2010里面做的,鏈接附后,但是發現月視圖上沒有了副標題,所以沒辦法實現了;還有就是日歷重疊功能,鏈接我也附后了,大家自己參考吧。
參考文檔
http://www.cnblogs.com/erucy/archive/2010/09/20/2416097.html
http://www.cnblogs.com/yunliang1028/archive/2012/02/15/2352766.html





