我针对两个不同的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上,但它没有完全解释解决方案。
答案 0 :(得分:2)
项目级权限可能会使list.Items
不会将每个项目暴露给正在考虑的用户上下文,因此,计算该属性的计数。
答案 1 :(得分:1)
ItemCount属性的值包括文档库中的文件夹以及子文件夹中的文件。 SPListCollection类的Count属性的值不包括文件夹。
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.itemcount.aspx
我的理论是它与文件夹有关,我知道你说它们是相同的安装。你确定是这样吗?您是否通过UI或其他方式检查了文件列表?