如何在SPFolder中查找项目计数?

时间:2010-05-27 18:41:27

标签: sharepoint

我有一个List,用于存储文件夹层次结构中的项目。

我注意到SPFolder.Files.Count始终为零。

有没有办法找出文件夹中有多少列表项?

3 个答案:

答案 0 :(得分:1)

我认为你正在寻找直接的孩子,而不是后代(如子文件夹中的项目)。

您是否还想在计数中包含子文件夹?在这种情况下,您可以使用:SPFolder.ItemCount

如果您只想要不是子文件夹的直接子listItems,那么您可以执行以下操作:

using (SPSite site = new SPSite(mySPSite))
{
    SPWeb web = site.OpenWeb();
    SPList list = web.Lists[myList];
    SPFolder folderInstance = list.RootFolder.SubFolders[folderUrl];

    SPQuery query = new SPQuery() ;
    query.Folder = folderInstance;

    SPListItemCollection items = list.GetItems(query) ;

    Console.WriteLine(items.Count);
}

我没试过。如果查询返回,则可能必须添加where子句以消除文件夹。

如果要包含所有列表项,即使在子文件夹中也是如此,请将SPQuery.ViewAttributes字段设置为query.ViewAttributes = "Scope=\"Recursive\"";

答案 1 :(得分:1)

您是否尝试从SPFolder获取SPListItem并检查SPBuiltInFieldId.ItemChildCount和SPBuiltInFieldId.FolderChildCount字段中的值?

这样的事情:

SPFolder folder = ...;
int? noOfItems = folder.Item[SPBuiltInFieldId.ItemChildCount] as int?;
int? noOfFolders = folder.Item[SPBuiltInFieldId.FolderChildCount] as int?;

SPBuiltInFieldId.ItemChildCount Field

SPBuiltInFieldId.FolderChildCount Field

了解更多信息。

答案 2 :(得分:0)

From Microsoft

  

使用SPList.ItemCount属性是   建议的方法来检索   列表中的项目数。作为一方   调整此属性的效果   但是,性能可以   偶尔回归意外   结果。例如,如果您需要   确切的项目数量,你应该   用...

我想知道这同样适用于SPFolder.ItemCount吗?