示例#1
0
        public static void ProcessAllFoldersInList(SPList list)
        {
            string viewFields = ContentIterator.FolderCoreViewFields +
                                "<FieldRef Name=\"ItemChildCount\"/>" +
                                "<FieldRef Name=\"FolderChildCount\"/>";

            // Handle the root web separately since it is not contained in the hierarchy
            ProcessFolder(list.RootFolder);

            // Check if the list has folders other than the root folder
            if (!SPFolderHierarchy.ListHasFolders(list))
            {
                return;
            }

            try
            {
                SPFolderHierarchy folders = new SPFolderHierarchy(list, true, viewFields, true);

                Console.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                "Total # of folders in list:  {0}",
                                                folders.Count));

                SPFolderHierarchy subFolders = folders.GetSubFolders(list.RootFolder.ServerRelativeUrl);
                foreach (SPFolder subfolder in ((IEnumerable <SPFolder>)subFolders))
                {
                    ProcessFolderRecursively(folders, subfolder);
                }
            }
            catch (SPQueryThrottledException ex)
            {
                HandleThrottledException(ex);
            }
        }
示例#2
0
        private static void ProcessFolderRecursively(SPFolderHierarchy folders, SPFolder folder)
        {
            ProcessFolder(folder);

            SPFolderHierarchy subFolders = folders.GetSubFolders(folder.ServerRelativeUrl);

            foreach (SPFolder subfolder in ((IEnumerable <SPFolder>)subFolders))
            {
                ProcessFolderRecursively(folders, subfolder);
            }
        }
示例#3
0
 private static void DeleteEmptyFolders(SPFolderHierarchy h)
 {
     foreach (SPFolder folder in (h as IEnumerable <SPFolder>))
     {
         if (folder.Item != null)
         {
             DeleteEmptyFolders(h.GetSubFolders(folder.ServerRelativeUrl));
             if (folder.ItemCount == 0)
             {
                 folder.Delete();
             }
         }
     }
 }