Compartilhar via


Como a: Adicionar um evento recorrente a listas em vários sites

Esta tarefa programação mostra como adicionar um evento recorrente com um site Meeting Workspace para a lista de eventos de cada site em uma coleção de subsites.

Para adicionar um evento recorrente com um site Meeting Workspace para a lista de eventos de cada site em uma coleção de subsites

  1. Criar um aplicativo console em Microsoft Visual Studio 2005, conforme descrito em Como a: Criar um aplicativo do console.

  2. Adicione um using ou Imports importações diretiva para a abertura das. cs ou arquivo .vb para o Microsoft.SharePoint e Microsoft.SharePoint.Meetings N:Microsoft.SharePoint.Meetings, da seguinte maneira:

                            Imports Microsoft.SharePoint
    Imports Microsoft.SharePoint.Meetings
    
                            using Microsoft.SharePoint;
    using Microsoft.SharePoint.Meetings;
    
  3. Usar o construtor SPSite M:Microsoft.SharePoint.SPSite.#ctor(System.String) para criar instância uma coleção site especificado. Este exemplo usa um indexador no AllWebs P:Microsoft.SharePoint.SPSite.AllWebs propriedade do SPSite T:Microsoft.SharePoint.SPSite classe para retornar um site específico e o Webs P:Microsoft.SharePoint.SPWeb.Webs propriedade do SPWeb T:Microsoft.SharePoint.SPWeb classe para retornar a coleção de subsites sob o site. Configurar um executar um loop foreach foreach para iterar por todos os subsites e obter a lista Eventos para cada site e a coleção de itens lista em cada lista de eventos, da seguinte maneira:

                            Dim evtTitle As String = Console.ReadLine()
    
    Dim siteCollection As New SPSite("Absolute_Url")
    Dim site As SPWeb = siteCollection.AllWebs("Site_Name")
    Dim subSites As SPWebCollection = site.Webs
    Dim subSite As SPWeb
    
    For Each subSite In subSites
    
        Dim list As SPList = subSite.Lists("Events")
        Dim listItems As SPListItemCollection = list.Items
    
                            string evtTitle = Console.ReadLine();
    
    SPSite siteCollection = new SPSite("Absolute_Url");
    SPWeb site = siteCollection.AllWebs["Site_Name"];
    SPWebCollection subSites = site.Webs;
    
    foreach (SPWeb subSite in subSites)
    {
        SPList list = subSite.Lists["Events"];
        SPListItemCollection listItems = list.Items;
    
  4. Crie um item da lista. Este exemplo usa o Add M:Microsoft.SharePoint.SPListItemCollection.Add método do SPListItemCollection T:Microsoft.SharePoint.SPListItemCollection classe para criar um não inicializado item da lista, usa indexadores para definir vários propriedades para o novo item e em seguida, usa o método Update M:Microsoft.SharePoint.SPListItem.UPDATE para concluir a criação de item.

                            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(2003, 8, 15, 8, 0, 0)
    recEvent("EndDate") = New DateTime(2003, 9, 25, 9, 0, 0)
    recEvent("UID") = 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(2003,8,15,8,0,0);
        recEvent["EndDate"] = new DateTime(2003,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();
    

    A variável recData recData contém um fragmento XML que especifica as propriedades para um evento recorrente levando local diariamente para Five Days, e atribui o indexador XMLTZone zona de tempo informações para o atual site. O XML que define a recorrência e especifica as informações zona de tempo está contido nas colunas da tabela UserData no de conteúdo ntext3 e ntext4 banco de dados.

    A seguinte tabela mostra exemplos de tipos diferentes de recorrência que podem ser usados.

    Descrição Exemplo

    Todos os outros dias até uma data de término especificada

                                    <recurrence><rule>
       <firstDayOfWeek>su</firstDayOfWeek>
       <repeat><daily dayFrequency='2' 
          /></repeat>
       <windowEnd>2003-09-
          20T09:00:00Z</windowEnd>
    </rule></recurrence>

    Semanalmente na segunda-feira

                                    <recurrence><rule>
       <firstDayOfWeek>su</firstDayOfWeek>
       <repeat><weekly mo='TRUE' 
          weekFrequency='1' /></repeat>
       <repeatForever>FALSE</repeatForever>
    </rule></recurrence>

    A cada dois meses no terceiro dia para cinco sessões

                                    <recurrence><rule>
       <firstDayOfWeek>su</firstDayOfWeek>
       <repeat><monthly monthFrequency='2'
          day='3' /></repeat>
       <repeatInstances>5</repeatInstances>
    </rule></recurrence>

    Mensalmente na primeira terça-feira até a data de término especificada

                                    <recurrence><rule>
       <firstDayOfWeek>su</firstDayOfWeek>
       <repeat>
          <monthlyByDay tu='TRUE' 
             weekdayOfMonth='first' 
             monthFrequency='1' />
       </repeat>
       <windowEnd>2003-08-
          02T10:00:00Z</windowEnd>
    </rule></recurrence>

    Anualmente no vinte dia do mês nono até uma data de término especificada

                                    <recurrence><rule>
       <firstDayOfWeek>su</firstDayOfWeek>
       <repeat><yearly yearFrequency='1' 
          month='9' day='20' /></repeat>
       <windowEnd>2007-09-
          20T07:00:00Z</windowEnd>
    </rule></recurrence>
  5. To add a Meeting Workspace site to the recurring event, use one of the Add methods of the SPWebCollection class and the LinkWithEvent method of the SPMeeting class.

                                Dim mwsSites As SPWebCollection = subSite.Webs
    
        Dim path As String = recEvent("Title").ToString()
    
        Dim newSite As SPWeb = mwsSites.Add(path, "Workspace_Name", _
            "Description", Convert.ToUInt32(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(subSite, guid, id, "WorkspaceLink", 
                "Workspace")
    
        Catch ex As System.Exception
    
            Console.WriteLine(ex.Message)
    
        End Try
    
    Next subSite
    
                                SPWebCollection mwsSites = subSite.Webs;
    
        string path = recEvent["Title"].ToString();
    
        SPWeb newSite = mwsSites.Add(path, "Workspace_Name", 
            "Description", 1033, "MPS#0", false, false);
    
        SPMeeting mwsSite = SPMeeting.GetMeetingInformation(newSite);
    
        string guid = list.ID.ToString();
        int id = recEvent.ID;
    
        try
        {
            mwsSite.LinkWithEvent(subSite, guid, id, "WorkspaceLink", 
                "Workspace");
        }
    
        catch (System.Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    

    After the Meeting Workspace site is created, the GetMeetingInformation method returns an SPMeeting object representing the site.

  6. Pressione F5 para iniciar a Console Application.

  7. Na prompt de comando, tipo um nome para o site Meeting Workspace e em seguida, pressionar ENTER para adicionar um evento recorrente com um site Meeting Workspace para a lista de eventos em todos os subsites sob um site.