迭代SPListItem / SPList

时间:2009-09-29 18:00:04

标签: c# sharepoint splistitem

我正在制作一份清单,供人们在我们公司的网站上执行任务。 我现在正在处理的功能是,一旦他们完成任务并将其标记为已完成,我希望我们的sharepoint webpart向他们发送一封电子邮件,其中包含他们仍需要完成的内容列表。

由于希望能够随意向列表中添加和减去项目的权力,它需要是模块化的,因此检查列表需要模块化并以模块化术语编写。

我遇到的问题是所有任务都存储在现有代码的SPList中。 我不确定如何遍历列表以查明该人是否已完成以下任务。我没有看到任何next,previous,head或tail操作(正如我所期望的那样)。由于索引使用字符串,因此它的行为更像是关联数据结构(映射)或来自数据库的主键。

请帮助,谢谢大家!

干杯,

-Jeremiah Tantongco

3 个答案:

答案 0 :(得分:5)

SharePoint列表不是计算机科学方式的列表,而是最终用户期望列表的内容:事物列表

您应该将列表视为与数据库表类似。如果要根据条件在表(列表)中查找记录(项目),则应使用查询。

因此,在SPList中查找SPListItem的正确方法是使用SPQuery,您可以在其中以精美的XML语法(CAML)指定条件,然后将SPQuery传递给SPList.GetItems,从而获得SPListItems的集合。 / p>

这应该给你一些谷歌的条款。如果您需要有关查询语法的更多帮助,请使用U2U Caml Query Builder或为我们提供更具体的信息。

答案 1 :(得分:0)

是否应该遍历列表可能是一个有争议的问题,但如果它不可避免(就像我的情况那样),可以使用以下代码。

        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
        }

答案 2 :(得分:-1)

这可以解决您的问题

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