Gewusst wie: Hinzufügen einer Ereignisserie zu Listen auf mehreren Websites
Letzte Änderung: Dienstag, 30. März 2010
Gilt für: SharePoint Foundation 2010
Verfügbar in SharePoint Online
Diese Programmieraufgabe illustriert, wie der Kalenderliste jeder Website in einer Websitesammlung ein wiederkehrendes Ereignis mit einer Besprechungsarbeitsbereich-Website hinzugefügt wird.
So fügen Sie der Kalenderliste jeder Website in einer Websitesammlung ein wiederkehrendes Ereignis mit einer Besprechungsarbeitsbereich-Website hinzu
Erstellen Sie in Microsoft Visual Studio 2010 eine Konsolenanwendung, wie in Gewusst wie: Erstellen einer Konsolenanwendung beschrieben.
Fügen Sie am Anfang der CS- oder VB-Datei wie folgt eine using- oder eine Imports-Direktive für die Namespaces Microsoft.SharePoint und Microsoft.SharePoint.Meetings hinzu.
Imports Microsoft.SharePoint Imports Microsoft.SharePoint.Meetings
using Microsoft.SharePoint; using Microsoft.SharePoint.Meetings;
Verwenden Sie den SPSite-Konstruktor, um eine bestimmte Websitesammlung zu instanziieren. In diesem Beispiel werden mithilfe der AllWebs-Eigenschaft der SPSite-Klasse alle Websites innerhalb der Websitesammlung zurückgegeben. Im Beispiel wird eine foreach-Schleife zur Aufzählung der Websites verwendet. Wenn eine Website mit der SharePoint Foundation-Standardvorlage (WebTemplateSTS) erstellt wurde, werden die Kalenderliste für die Website sowie die Sammlung der Listenelemente in der Liste abgerufen.
Dim evtTitle As String = Console.ReadLine() Using siteCollection As New SPSite("https://Server/sites/SiteCollection") Dim collWeb As SPWebCollection = siteCollection.AllWebs For Each oWebsite As SPWeb In collWeb If oWebsite.WebTemplate = SPWebTemplate.WebTemplateSTS Then Dim list As SPList = oWebsite.Lists("Calendar") Dim listItems As SPListItemCollection = list.Items
string evtTitle = Console.ReadLine(); using (SPSite siteCollection = new SPSite("https://Server/sites/SiteCollection")) { SPWebCollection collWeb = siteCollection.AllWebs; foreach (SPWeb oWebsite in collWeb) { if (oWebsite.WebTemplate == SPWebTemplate.WebTemplateSTS) { SPList list = oWebsite.Lists["Calendar"]; SPListItemCollection listItems = list.Items;
Verwenden Sie zum Erstellen eines Listenelements die Add-Methode der SPListItemCollection-Klasse, um zunächst ein nicht initialisiertes Listenelement zu erstellen. Legen Sie mithilfe der Indexerstellung verschiedene Eigenschaften für das neue Element fest, und schließen Sie das Erstellen des Elements dann mit der Update-Methode ab.
Dim recEvent As SPListItem = listItems.Add() Dim recdata As String = "<recurrence><rule>" & "<firstDayOfWeek>su</firstDayOfWeek>" & "<repeat><daily dayFrequency='1' /></repeat>" & "<repeatInstances>5</repeatInstances></rule></recurrence>" recEvent("Title") = evtTitle recEvent("RecurrenceData") = recdata recEvent("EventType") = 1 recEvent("EventDate") = New DateTime(2011, 8, 15, 8, 0, 0) recEvent("EndDate") = New DateTime(2011, 9, 25, 9, 0, 0) recEvent("UID") = System.Guid.NewGuid() recEvent("TimeZone") = 13 recEvent("Recurrence") = - 1 recEvent("XMLTZone") = "<timeZoneRule>" & "<standardBias>480</standardBias>" & "<additionalDaylightBias>-60</additionalDaylightBias>" & "<standardDate><transitionRule month='10' day='su' weekdayOfMonth='last' />" & "<transitionTime>2:0:0</transitionTime></standardDate>" & "<daylightDate><transitionRule month='4' day='su' weekdayOfMonth='first' />" & "<transitionTime>2:0:0</transitionTime>" & "</daylightDate></timeZoneRule>" recEvent.Update()
SPListItem recEvent = listItems.Add(); string recData = "<recurrence><rule>" + "<firstDayOfWeek>su</firstDayOfWeek>" + "<repeat><daily dayFrequency='1' /></repeat>" + "<repeatInstances>5</repeatInstances></rule></recurrence>"; recEvent["Title"] = evtTitle; recEvent["RecurrenceData"] = recData; recEvent["EventType"] = 1; recEvent["EventDate"] = new DateTime(2011,8,15,8,0,0); recEvent["EndDate"] = new DateTime(2011,9,25,9,0,0); recEvent["UID"] = System.Guid.NewGuid(); recEvent["TimeZone"] = 13; recEvent["Recurrence"] = -1; recEvent["XMLTZone"] = "<timeZoneRule>" + "<standardBias>480</standardBias>" + "<additionalDaylightBias>-60</additionalDaylightBias>" + "<standardDate><transitionRule month='10' day='su' weekdayOfMonth='last' />" + "<transitionTime>2:0:0</transitionTime></standardDate>" + "<daylightDate><transitionRule month='4' day='su' weekdayOfMonth='first' />" + "<transitionTime>2:0:0</transitionTime>" + "</daylightDate></timeZoneRule>"; recEvent.Update();
Die recData-Variable enthält ein XML-Fragment, das Eigenschaften für ein wiederkehrendes Ereignis angibt, das fünf Tage lang täglich stattfindet, und die XMLTZone-Indexerstellung weist Zeitzoneninformationen für die aktuelle Website zu. Der XML-Code mit der Definition der Wiederholungen und der Angabe der Zeitzoneninformationen befindet sich in den Spalten ntext3 und ntext4 der UserData-Tabelle in der Inhaltsdatenbank.
In der folgenden Tabelle sind Beispiele für die verschiedenen Wiederholungstypen aufgeführt, die verwendet werden können.
Beschreibung
Beispiel
Jeden zweiten Tag bis zum angegebenen Enddatum
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><daily dayFrequency='2' /></repeat> <windowEnd>2003-09- 20T09:00:00Z</windowEnd> </rule></recurrence>
Wöchentlich am Montag
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><weekly mo='TRUE' weekFrequency='1' /></repeat> <repeatForever>FALSE</repeatForever> </rule></recurrence>
Fünf Sitzungen alle zwei Monate am dritten Tag
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><monthly monthFrequency='2' day='3' /></repeat> <repeatInstances>5</repeatInstances> </rule></recurrence>
Monatlich am ersten Dienstag bis zum angegebenen Enddatum
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat> <monthlyByDay tu='TRUE' weekdayOfMonth='first' monthFrequency='1' /> </repeat> <windowEnd>2003-08- 02T10:00:00Z</windowEnd> </rule></recurrence>
Jährlich am 20. Tag des neunten Monats bis zum angegebenen Enddatum
<recurrence><rule> <firstDayOfWeek>su</firstDayOfWeek> <repeat><yearly yearFrequency='1' month='9' day='20' /></repeat> <windowEnd>2007-09- 20T07:00:00Z</windowEnd> </rule></recurrence>
Wenn Sie dem wiederkehrenden Ereignis eine einfache Besprechungsarbeitsbereich-Website hinzufügen möchten, erstellen Sie mithilfe der Add()-Methode der SPWebCollection-Klasse die Website (angegeben mit MPS#0) und verknüpfen die Website mithilfe der LinkWithEvent-Methode der SPMeeting-Klasse mit dem Calendar-Element.
Dim mwsSites As SPWebCollection = oWebsite.Webs Dim path As String = recEvent("Title").ToString() Dim newSite As SPWeb = mwsSites.Add(path, "Workspace_Name", "Description", 1033, _ "MPS#0", False, False) Dim mwsSite As SPMeeting = SPMeeting.GetMeetingInformation(newSite) Dim guid As String = list.ID.ToString() Dim id As Integer = recEvent.ID Try mwsSite.LinkWithEvent(oWebsite, guid, id, "WorkspaceLink", "Workspace") Catch ex As System.Exception Console.WriteLine(ex.Message) End Try End If oWebsite.Close() Next End Using
SPWebCollection mwsSites = oWebsite.Webs; string path = recEvent["Title"].ToString(); SPWeb newSite = mwsSites.Add(path, "MyNewWorkspace", "Description", 1033, "MPS#0", false, false); SPMeeting mwsSite = SPMeeting.GetMeetingInformation(newSite); string guid = list.ID.ToString(); int id = recEvent.ID; try { mwsSite.LinkWithEvent(oWebsite, guid, id, "WorkspaceLink", "Workspace"); } catch (System.Exception ex) { Console.WriteLine(ex.Message); } } oWebsite.Close(); } }
Nachdem die Besprechungsarbeitsbereich-Website erstellt wurde, gibt die GetMeetingInformation-Methode ein SPMeeting-Objekt für die Website zurück.
Drücken Sie F5, um die Konsolenanwendung zu starten.
Geben Sie an der Eingabeaufforderung einen Namen für die Besprechungsarbeitsbereich-Website ein, und drücken Sie die EINGABETASTE, um ein wiederkehrendes Ereignis mit einer Besprechungsarbeitsbereich-Website zur Kalenderliste aller Websites innerhalb der Websitesammlung hinzuzufügen.