为什么我不能访问List中的项目,即使SPList.ItemCount是> 0?

时间:2010-09-29 15:49:31

标签: sharepoint sharepoint-2007

我针对两个不同的SharePoint安装运行相同的代码,以迭代List中的项目并显示数据。与第一个SharePoint安装相反,

SPList.ItemCount == SPList.Items.Count == 4

对于第二个SharePoint安装,SPList.ItemCount == 4而SPList.Items.Count == 0,并且遍历List的Items的foreach循环不起作用(因为没有任何Items)。 (不用说,SP安装上的列表都有相同的项目。)

我正在使用的代码可以这样概括:

...

SPList list = web.Lists["list"];
SPListItemCollection itemCollection = list.Items;

Console.WriteLine("list.ItemCount: {0}", list.ItemCount); //prints "list.ItemCount: 4"
Console.WriteLine("list.Items.Count: {0}", list.Items.Count); //prints "list.Items.Count: 0"

foreach (SPListItem item in itemCollection)
{
    //nothing executed here, since itemCollection is empty,
    //even though list.ItemCount is 4.
}

...

什么会导致SPList.ItemCount和SPList.Items.Count不同?而且,更重要的是,为什么我不能迭代列表中的项目,即使SPList.ItemCount> 0?

这个问题的副本出现在SharePoint Overflow上,但它没有完全解释解决方案。

2 个答案:

答案 0 :(得分:2)

项目级权限可能会使list.Items不会将每个项目暴露给正在考虑的用户上下文,因此,计算该属性的计数。

答案 1 :(得分:1)

ItemCount属性的值包括文档库中的文件夹以及子文件夹中的文件。 SPListCollection类的Count属性的值不包括文件夹。

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.itemcount.aspx

我的理论是它与文件夹有关,我知道你说它们是相同的安装。你确定是这样吗?您是否通过UI或其他方式检查了文件列表?