SharePoint 2010 使用”日歷重疊“功能


日歷重疊?這是個什么功能呢?

先來張圖吧,

截圖00_thumb[2]

好看不,這花花綠綠的,每個日程都有自己的顏色。在2007的時候,要做成這個樣子要多麻煩啊!

這個效果就是日歷重疊的功勞。

這個篇文章主要介紹

1. 手動直接設置 日歷重疊

手動設置其實不必需要多說的,就是在網站直接設置日歷重疊。
2. 用程序添加日歷重疊功能

用程序添加的主要意圖是,我們在列表模板創建日歷列表時,自動為該列表指定一個重疊的日歷。
3. 重疊的日歷用彈窗形式打開

如果你現在已經設置過第一步了,那么你會發現重疊的日歷,是在新窗口打開的,而不是在當前頁面以彈窗形式打開的。

那么在這個步驟里,將會告訴你如何讓他在當前窗口,以彈窗形式打開。

進入正題。

一 手動直接設置 “日歷重疊”

1. 在日歷列表的Ribbon設置里有這樣一個選項

截圖01_thumb[1]

2. 點擊“日歷重疊”,這個畫面中,現在我已經添加了,3個日歷重疊的列表

截圖02_thumb[2]

3. 點擊“新建日歷”,

這個部分,可以設置日歷的基本信息,日歷可以有兩個來源,一個是sharepoint 一個是Exchange

文章中將主要介紹SharePoint列表,因為現在手頭沒有Exchange環境。

截圖03_thumb[2]

日歷名稱:這個是要顯示在日歷視圖中的 名稱,不是重疊日歷列表的名稱,這個名字可以隨便寫。

顏色:這個可以選擇要顯示這個日歷中的事件時,是什么顏色的,不過顏色就只有幾中可以選擇。

WebUrl:這個是重疊列表的所在網站地址。那么,這個”解決“我真不知道怎么形容他,也不知道是怎么翻譯的,

點擊以后,下面的列表和視圖,會加載這個網站中的日歷列表和對應列表的屬於日歷類型的視圖。

始終顯示:直接選擇就可以了,沒什么好說的。

截圖04_thumb[3]

到這里,這個日歷重疊的功能就可以宣告完成了,就是這么容易。

截圖05_thumb

在這張圖中,可以看到,當你點擊你的日歷列表時,左側區域,會顯示出在這個視圖中,已經重疊的日歷名稱。和顏色。

這里點擊后,會直接到對應日歷的視圖頁面。

接下來,進行第二個

二 通過程序添加日歷重疊

1. 如果我們已經用vs 創建了一個 日歷列表定義。你會很驚奇的發現在他的視圖里 沒有日歷重疊的功能。

我就背這個問題,折磨的不輕啊 。后來想了想,可能是vs創建的列表定義,同時要符合foundation和server 所以沒有添加這個功能。

現在要說明的是這個功能只有在server版可用。但后來發現,用列表定義創建出來的列表和sharepoint網站自己創建的日歷列表張的不一樣。

所以后來干脆,用sharepoint 的日歷列表做了一個模板來用。

2. 首先我們需要部署日歷的列表模板,讓后單獨做一個按鈕 ,添加這個日歷列表。

接下來就是要在這個按鈕上添加一些程序,來完成添加日歷重疊。

SPListTemplateCollection listtempcol = oWeb.Site.GetCustomListTemplates(oWeb);
if (listtempcol.Count == 0)
   return;
oWeb.Lists.Add(”列表標題“, "列表描述", listtempcol[”自定義列表名稱“]);
SPList oList = oWeb.Lists["已經創建好的列表標題"];
SPList ShareList = oWeb.Lists["日歷重疊的列表"]
SPView view = oList.DefaultView;
StringBuilder b = new StringBuilder();
b.AppendLine("<AggregationCalendars>");
b.AppendLine(GetAggregationCalendar(ShareList, oWeb.Url, "1"));
b.AppendLine("</AggregationCalendars>");
view.CalendarSettings = b.ToString();
view.Update();
 
        
/// <summary>
/// 添加日歷重疊的方法
/// </summary>
/// <param name="list"></param>
/// <param name="weburl"></param>
/// <param name="color"></param>
/// <returns></returns>
private string GetAggregationCalendar(SPList list, string weburl, string color)
{
   SPView view = list.DefaultView;
   String str = String.Format(
   @"  <AggregationCalendar Id=""{0}"" Type=""SharePoint"" Name=""{1}"" Description=""{1}"" Color=""{2}"" 
    AlwaysShow=""True"" CalendarUrl=""{3}"">
    <Settings WebUrl=""{4}"" ListId=""{5}"" ViewId=""{6}"" ListFormUrl=""{7}"" />
     </AggregationCalendar>",
    new string[] { Guid.NewGuid().ToString(), list.Title, color, list.DefaultViewUrl, weburl, list.ID.ToString(), view.ID.ToString(), list.DefaultDisplayFormUrl });
    return str;
}

這樣你在打開這個列表時 就會有這個重疊列表了。

下面來介紹第三步

三 重疊的日歷用彈窗形式打開

1. 重疊日歷的event會在新窗口中打開。所以就想用jquery改一下超鏈接,讓他彈窗形式打開

2. 於是乎寫了這樣一段 js

function OpenWindow() {
        $(".ms-acal-color1").each(function () {
            $(this).children().children().click(function () {
                EditLink2(this, 'WPQ2'); return false;
            });
        })
    }

但 完全沒效果。

后來發現,因為js腳本已經加載結束了,但是沒有找到對應的超鏈接。

因為 日歷列表的數據是 ashx加載進來的,我js執行完的時候,它數據還沒進來,悲催啊。

然后,便有了下面的js腳本

function OpenShareScheduleInWindow() {
        window.setTimeout("OpenWindow()", 2000);
       
    }
    function OpenWindow() {
        $(".ms-acal-color1").each(function () {
            $(this).children().children().click(function () {
                EditLink2(this, 'WPQ2'); return false;
            });
        })
    }
_spBodyOnLoadFunctionNames.push('OpenShareScheduleInWindow');

讓他停兩秒在執行。果然,效果就出來了。

有了”日歷重疊“這個功能以后,我們便可以將日歷列表做的很好看了。

完,有問題可以隨時聯系 yun_liang1028@163.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM