Итерация через SPListItem / SPList

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

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

У меня проблема в том, что все задачи хранятся в SPList существующего кода. Я не совсем уверен, как перебирать список, чтобы узнать, выполнил ли этот человек уже следующую задачу. Я не вижу никаких операций next, previous, head или tail (как и следовало ожидать от списка). Поскольку при индексировании используется строка, она больше похожа на ассоциативную структуру данных (карту) или первичный ключ из БД.

Помогите пожалуйста и всем спасибо!

Ваше здоровье,

-Джеремия Тантонгко


person Zigu    schedule 29.09.2009    source источник
comment
Ваши пользователи используют Outlook? если да, то вы можете просто использовать готовые функции и сэкономить себе немного работы.   -  person Kasper    schedule 30.09.2009


Ответы (3)


Список SharePoint - это не список с точки зрения информатики, это то, что конечный пользователь ожидает от списка: список вещей.

Вам следует больше рассматривать список как похожий на таблицу базы данных. Если вы хотите найти записи (элементы) в таблице (списке) на основе условий, вам следует использовать запрос.

Итак, правильный способ найти SPListItems в SPList - это использовать SPQuery, в котором вы указываете свои критерии в красивом синтаксисе XML (CAML), затем передаете SPQuery в SPList.GetItems и тем самым получаете обратно коллекцию SPListItems.

Это должно дать вам некоторые термины для Google. Если вам нужна дополнительная помощь по синтаксису запроса, используйте U2U Caml Query Builder. или дайте нам более конкретную информацию.

person Per Jakobsen    schedule 29.09.2009
comment
В дополнение к этому вы также можете запросить SPList с помощью LINQ: linqtosharepoint.codeplex.com - person Magnus Johansson; 30.09.2009

Следует ли вам перебирать список или нет, может быть предметом споров, но если это неизбежно (как это было в моем случае), можно использовать следующий код.

        SPSite siteCollection = new SPSite("http://localhost/");
        SPWeb site = siteCollection.RootWeb;
        SPList myList = site.Lists["My List"];
        SPListItemCollection itemCollection = myList.Items;

        foreach (SPListItem item in itemCollection)
        {
            //Do something with each item
        }
person Landric    schedule 12.07.2011

Это может решить вашу проблему

SPList interviewList = myWeb.Lists["listtoiterate"];
foreach (SPListItem interview  in interviewList)
{
// Do Something
} 
person Tejas Desai    schedule 26.10.2009