我有一个List,用于存储文件夹层次结构中的项目。
我注意到SPFolder.Files.Count
始终为零。
有没有办法找出文件夹中有多少列表项?
答案 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)
使用SPList.ItemCount属性是 建议的方法来检索 列表中的项目数。作为一方 调整此属性的效果 但是,性能可以 偶尔回归意外 结果。例如,如果您需要 确切的项目数量,你应该 用...
我想知道这同样适用于SPFolder.ItemCount吗?