Поделиться через


Метод SPMeeting.LinkWithEvent

Связи сайтов рабочих областей для собраний с помощью элемента задать в списке событий календаря на веб-сайте Microsoft SharePoint Foundation.

Пространство имен:  Microsoft.SharePoint.Meetings
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
Public Function LinkWithEvent ( _
    eventWeb As SPWeb, _
    strEventListId As String, _
    eventItemId As Integer, _
    strEventWorkspaceLinkField As String, _
    strEventWorkspaceLinkURLField As String _
) As String
'Применение
Dim instance As SPMeeting
Dim eventWeb As SPWeb
Dim strEventListId As String
Dim eventItemId As Integer
Dim strEventWorkspaceLinkField As String
Dim strEventWorkspaceLinkURLField As String
Dim returnValue As String

returnValue = instance.LinkWithEvent(eventWeb, _
    strEventListId, eventItemId, strEventWorkspaceLinkField, _
    strEventWorkspaceLinkURLField)
public string LinkWithEvent(
    SPWeb eventWeb,
    string strEventListId,
    int eventItemId,
    string strEventWorkspaceLinkField,
    string strEventWorkspaceLinkURLField
)

Параметры

  • eventWeb
    Тип: Microsoft.SharePoint.SPWeb

    Объект, представляющий веб-сайт со списком, который содержит элемент события.

  • strEventListId
    Тип: System.String

    string , который идентифицирует компонент календаря. Это значение можно получить, выполнив преобразование строк на значение свойства SPList.ID список событий.

  • eventItemId
    Тип: System.Int32

    Значение, идентифицирующее элемент списка событий. Это значение можно получить из свойства SPListItem.ID события элемента списка.

  • strEventWorkspaceLinkField
    Тип: System.String

    Внутреннее имя поля в элементе списка событий, которая получает ссылку. Для элемента, который имеет тип контента Event это поле определяется SPBuiltInFieldId.WorkspaceLink поля идентификатор (ID) и имеет внутреннее имя "WorkspaceLink".

  • strEventWorkspaceLinkURLField
    Тип: System.String

    Внутреннее имя поля в элементе списка событий, который отображает имя рабочей области. Для элемента, который имеет тип контента Event это поле определяется идентификатор поля SPBuiltInFieldId.Workspace и имеет внутреннее имя "Рабочая область".

Возвращаемое значение

Тип: System.String
URL-адрес сайта рабочей области для собраний.

Замечания

Метод LinkWithEvent связывает элемента в список событий, например списка Calendar по умолчанию, сайтов рабочих областей для собраний. Список событий — любой список, который имеет значение свойства BaseTemplate , равное SPListTemplateType.Events. Сайт рабочей области для собраний — это веб-сайт, для которого метод IsMeetingWorkspaceWeb(SPWeb) возвращает true.

Метод LinkWithEvent создает новый экземпляр собрания в сайт рабочей области для собраний. Затем метод помещает URL-адрес экземпляра собрания, в том случае, если поля элемента, который указан в четвертый параметр, strEventWorkspaceLinkFieldи его устанавливает имя сайта рабочей области для собраний в поле, указанный в параметре пятому strEventWorkspaceLinkURLField. (Имена параметров ввести в заблуждение. Только не забудьте передать URL-адрес для ссылки, а затем отображаемый текст для ссылки.) Если элемент списка отображается в форме, URL-адрес для экземпляра собрания отображается как ссылка и имя рабочей области, отображается в виде текста ссылки. Ссылка позволяет пользователям перейдите к элементу списка событий в рабочую область, а рабочей области обратно на элемент списка.

Примеры

В следующем консольном приложении показано, как добавить элемент в список событий Calendar , создайте сайт рабочей области и затем путем вызова метода LinkWithEvent связывании элементов событий рабочей области.

Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Meetings

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.OpenWeb()

            ' Get the calendar event list.
            Dim lists As SPListCollection = webSite.Lists
            Dim eventList As SPList = Nothing
            Dim list As SPList
            For Each list In lists
               If list.BaseTemplate = SPListTemplateType.Events Then
                  eventList = list
                  Exit For
               End If
            Next

            If eventList IsNot Nothing Then

               ' Add a new event to the calendar.
               Dim eventTitle As String = "Test"
               Dim eventLocation As String = "Your office"
               Dim eventStart As DateTime = DateTime.Now.AddDays(7)
               Dim eventDuration As Double = 0.5
               Dim calendarEvent As SPListItem = AddEventToCalendar(eventList, eventTitle, _
                                                 eventLocation, eventStart, eventDuration)


               ' Create a meeting workspace Web site.
               Dim mwsWeb As SPWeb = CreateMWSWeb(webSite, calendarEvent)
               If mwsWeb IsNot Nothing Then

                  ' Link the calendar event to the workspace.
                  Dim listId As String = eventList.ID.ToString("B")
                  Dim eventId As Integer = calendarEvent.ID

                  Dim meetingInfo As SPMeeting = SPMeeting.GetMeetingInformation(mwsWeb)
                  Dim mtgUrl As String = meetingInfo.LinkWithEvent(webSite, listId, eventId, _
                                                               "WorkspaceLink", "Workspace")

                  ' Print the workspace URL to the console.
                  Console.WriteLine(mtgUrl)

                  ' Clean up
                  mwsWeb.Dispose()

               End If

            End If

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub

   Function AddEventToCalendar(ByRef calendar As SPList, ByVal title As String, ByVal location As String, _
                               ByVal start As DateTime, ByVal duration As Double) As SPListItem
      Dim item As SPListItem = Nothing

      ' Test the list to be sure it is an events list .
      If Nothing Is calendar Or calendar.BaseTemplate <> SPListTemplateType.Events Then
         Return item
      End If

      ' Add the new item to the events list .
      item = calendar.Items.Add()
      item(SPBuiltInFieldId.UID) = Guid.NewGuid()
      item(SPBuiltInFieldId.Title) = title
      item(SPBuiltInFieldId.Location) = location
      item(SPBuiltInFieldId.StartDate) = start
      item(SPBuiltInFieldId.EndDate) = start.AddHours(duration)
      item(SPBuiltInFieldId.TimeZone) = calendar.ParentWeb.RegionalSettings.TimeZone.ID
      item.Update()
      Return item
   End Function

   Function CreateMWSWeb(ByRef webSite As SPWeb, ByVal calendarEvent As SPListItem) As SPWeb
      Dim path As String = calendarEvent.Title
      Dim workspaceTitle As String = calendarEvent.Title + " Workspace"
      Dim description As String = "Meeting workspace"
      Dim mwsWeb As SPWeb = Nothing

      Try
         mwsWeb = webSite.Webs.Add(path, workspaceTitle, _
                                   description, 1033, "MPS#0", _
                                   False, False)
      Catch ex As SPException 'A site of that name already exists.
         If SPMeeting.IsMeetingWorkspaceWeb(webSite.Webs(path)) Then
            mwsWeb = webSite.Webs(path)
         End If
      End Try

      Return mwsWeb
   End Function

End Module
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Meetings;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.OpenWeb())
            {
               // Get the calendar event list.
               SPListCollection lists = webSite.Lists;
               SPList eventList = null;
               foreach (SPList list in lists)
               {
                  if (list.BaseTemplate == SPListTemplateType.Events)
                  {
                     eventList = list;
                     break;
                  }
               }
               if (null != eventList)
               {
                  // Add a new event to the calendar.
                  string eventTitle = "Test";
                  string eventLocation = "Your office";
                  DateTime eventStart = DateTime.Now.AddDays(7);
                  double eventDuration = 0.5;
                  SPListItem calendarEvent = AddEventToCalendar(eventList, eventTitle,
                                             eventLocation, eventStart, eventDuration);

                  // Create a meeting workspace Web site.
                  SPWeb mwsWeb = CreateMWSWeb(webSite, calendarEvent);
                  if (null != mwsWeb)
                  {
                     // Link the calendar event to the workspace.
                     string listId = eventList.ID.ToString("B");
                     int eventId = calendarEvent.ID;

                     SPMeeting meetingInfo = SPMeeting.GetMeetingInformation(mwsWeb);
                     string mtgUrl = meetingInfo.LinkWithEvent(webSite, listId, eventId,
                                                               "WorkspaceLink", "Workspace");

                     // Print the workspace URL to the console.
                     Console.WriteLine(mtgUrl);

                     // Clean up
                     mwsWeb.Dispose();
                  }
               }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
         }
      }

      static SPListItem AddEventToCalendar(SPList calendar, string title, string location,
                                           DateTime start, Double duration)
      {
         SPListItem item = null;

         // Test the list to be sure it is an events list .
         if (null == calendar || calendar.BaseTemplate != SPListTemplateType.Events)
            return item;

         // Add the new item to the events list .
         item = calendar.Items.Add();
         item[SPBuiltInFieldId.UID] = Guid.NewGuid();
         item[SPBuiltInFieldId.Title] = title;
         item[SPBuiltInFieldId.Location] = location;
         item[SPBuiltInFieldId.StartDate] = start;
         item[SPBuiltInFieldId.EndDate] = start.AddHours(duration);
         item[SPBuiltInFieldId.TimeZone] = calendar.ParentWeb.RegionalSettings.TimeZone.ID;
         item.Update();
         return item;
      }

      static SPWeb CreateMWSWeb(SPWeb webSite, SPListItem calendarEvent)
      {
         string path = calendarEvent.Title;
         string workspaceTitle = calendarEvent.Title + " Workspace";
         string description = "Meeting workspace";
         SPWeb mwsWeb = null;
         try
         {
            mwsWeb = webSite.Webs.Add(path, workspaceTitle,
                                      description, 1033, "MPS#0",
                                      false, false);
         }
         catch (SPException) // A site of that name already exists.
         {
            if (SPMeeting.IsMeetingWorkspaceWeb(webSite.Webs[path]))
               mwsWeb = webSite.Webs[path];
         }
         return mwsWeb;
      }
   }
}

См. также

Справочные материалы

SPMeeting класс

Элементы SPMeeting

Пространство имен Microsoft.SharePoint.Meetings

SPWebCollection.Add

Другие ресурсы

How to: Add a Recurring Event to Lists on Multiple Sites