Веб-часть запроса контента Sharepoint: отображение элементов из списка «событий», которые настроены на повторение или повторение в течение месяца - PullRequest
2 голосов
/ 17 июня 2010

Я читал этот пост msdn: http://msdn.microsoft.com/en-us/library/aa981241.aspx

пытается изменить веб-часть запроса контента, чтобы отображать только элементы из списка событий, которые происходят в течение 30 дней или повторяются в течение 30 дней. Очень просто иметь дело с событиями, которые не повторяются, потому что я могу сравнить [Дата начала] с [Сегодня] +30 с изменением этой общей конфигурации веб-части, но для повторяющихся событий кажется, что [Дата начала] и [Дата окончания ] опишите период, в течение которого должно происходить повторяющееся событие, и я не знаю, что делать, чтобы определить скорейшее повторное возникновение события. Cqwp принимает только три элемента фильтра, поэтому я не могу иметь дело как с повторяющимися, так и с единичными элементами вхождения без переопределения запроса.

Я думаю, что поле, которое мне нужно использовать для повторного появления, является одним из следующих: MSDN-Microsoft-ком / EN-US / библиотека / microsoft.sharepoint.spfieldrecurrence_members.aspx но ни один из них не кажется подходящим.

Как вы справляетесь с повторением "четвертого дня месяца" MSDN-Microsoft-ком / EN-US / библиотека / microsoft.sharepoint.weekofmonth.aspx

Как вы можете переопределить запрос, чтобы отфильтровать повторяющиеся и единичные события, чтобы показать только те, которые происходят в течение недели?

Я добавил следующий код в файл CQWP .webpart:

<Where>
<Or>
<And>
  <Neq>
    <FieldRef Name="FRecurrence"/>
    <Value Type="Recurrance">1</Value>
  </Neq>
  <And> 
    <Lt>
      <FieldRef Name="EventDate" Type="DateTime"/>
      <Value Type="DateTime"><Today OffsetDays="30"/></Value>
    </Lt>
    <Gt>
     <FieldRef Name="EventDate" Type="DateTime"/>
    <Value Type="DateTime"><Today /></Value>
    </Gt>
  </And>
</And>
<DataRangesOverlap>
  <FieldRef Name="EventDate" />
  <FieldRef Name="EndDate" />
  <FieldRef Name="RecirrenceId" />
  <Value Type="DateTime"><Month /></Value>
</DataRangesOverlap>
</Or>   
</Where>

но моя страница возвращается: "Невозможно добавить выбранные веб-части (и). Недопустимый формат файла. Попробуйте импортировать файл веб-части (.WebPart)."

1 Ответ

1 голос
/ 17 июня 2010

Повторяющиеся события SharePoint хитрый . Этот пост - единственный лучший ресурс для понимания путаницы повторяющихся событий

Понимание календаря SharePoint и его экспорта в формат iCal

Я не думаю, что вы сможете сделать это в CEWP, но вы можете получить повторения, используя что-то вроде

    SPList list = oSPWeb.GetList(listGuid);
    SPQuery query = new SPQuery();
    query.ExpandRecurrence = true;
    query.CalendarDate = new DateTime(2010, 6, 17);

    query.Query = "<Where><DateRangesOverlap><FieldRef Name=\"EventDate\" /><FieldRef Name=\"EndDate\" /><FieldRef Name=\"RecurrenceID\" /><Value Type=\"DateTime\"><Week /></Value></DateRangesOverlap></Where>";
    SPListItemCollection listItems = list.GetItems(query);
    foreach (SPListItem items in listItems)
    {
        // items["EventDate"].ToString()
    }

Тогда вы получите повторяющиеся и неповторяющиеся события, которые происходят на этой неделе.

Но имейте в виду, что это предназначено для использования в представлении календаря, так что, если вы делаете, например,

query.CalendarDate = new DateTime(2010, 6, 17);
query.Query = "<Where><DateRangesOverlap><FieldRef Name=\"EventDate\" /><FieldRef Name=\"EndDate\" /><FieldRef Name=\"RecurrenceID\" /><Value Type=\"DateTime\"><Month /></Value></DateRangesOverlap></Where>";

(Обратите внимание на настройку месяца), тогда вы получите все события, которые должны появиться в представлении календаря на эти месяцы - с 31 мая 2010 по 4 июля 2010 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...