В рабочей области собрания программно получить все пункты повестки дня из списка. - PullRequest
3 голосов
/ 08 июня 2009

Я хочу получить все элементы из определенного списка в рабочей области повторяющихся собраний. Я попытался выполнить следующий CAML:

<Query>
   <Where>
      <IsNotNull>
         <FieldRef Name='ID' />
      </IsNotNull>
   </Where>
</Query>

Но он отображает только данные для предстоящей встречи.

Однако, когда я открываю список, в меню действий я могу выбрать отображение данных всех собраний. Это заставляет меня думать, что это возможно. Я знаю, что могу преобразовать список в элементы серии, чтобы они появлялись на всех собраниях, но я не хочу этого.

Ответы [ 2 ]

5 голосов
/ 15 июня 2009

Yeehaaw!

Наконец-то я нашел решение! SPQuery класс имеет свойство MeetingInstanceId , которому можно присвоить значение определенного InstanceID (например, 20090615 для элементов 15 июня 2009 г.) или запросить все пунктам, которым вы должны присвоить SPMeeting.SpecialInstance значение перечисления (не забудьте привести его к типу int).

Затем вы просто выполняете запрос, чтобы получить элементы из любой рабочей области, которую хотите.

О, и не забудь

using Microsoft.SharePoint.Meetings;

Или вы можете пропустить, используя SPMeeting.SPecialInstance, но используйте целые числа непосредственно от -3 до 0

Пример кода:

using(SPSite site = new SPSite(<enter your workspace url>))
using (SPWeb web = site.OpenWeb())
{              
    SPQuery query = new SPQuery();
    query.MeetingInstanceId = (int)SPMeeting.SpecialInstance.AllButSeries;
    query.Query = @"<Query>
                       <Where>
                          <IsNotNull>
                             <FieldRef Name='ID' />
                          </IsNotNull>
                       </Where>
                    </Query>";

    SPList list = web.Lists[<enter your list>];
    foreach (SPListItem item in list.GetItems(query))
    {
        Console.WriteLine(item[item.Fields.GetFieldByInternalName("Title").Id]);
    }
}

Потребовалось так много времени, чтобы это найти. Вероятно, не слишком много информации в сети для этой проблемы, или я не выбрал правильные ключевые слова, но в любом случае кредит этот источник для получения в первую очередь для ключевых слов "получить все элементы списка повторяющегося рабочего пространства sharepoint" .

Надеюсь, это поможет другим.

0 голосов
/ 09 июня 2009

Я думаю, что в представлении списка по умолчанию отображаются только элементы списка предстоящих собраний, а не элементы списка собраний в прошлом.

Если вы не укажете представление, в котором вы выполняете запрос CAML, он извлечет все элементы из представления по умолчанию. Используйте представление «Все элементы» (представление «Все события», если это календарь) вместо представления по умолчанию, а также установите для свойства SPQuery.ExpandRecurrence значение true.

...