Create nth level of folders creation in SharePoint document
library:
Requirement: Recently I have got one requirements i.e.
create 2 levels of folder creation in the SharePoint document library means
create a root folder and sub folder inside it.
Solution: I started
development to support 2 levels of folder creation but I thought later on what
to do if users may come back with 3 levels of folder creation. For that reason I
have developed to support up to nth
level folder creation.
e.g.: Folder creation levels
Level 1: /Document library/ Folder/
Level2: /Document
library/ Folder/Sub Folder/
Level3: /Document
library/ Folder/Sub Folder/Sub Folder/
Nth level: /Document
library/ Folder/Sub Folder/Sub Folder/..................../ nth sub folder
Approach: Check whether
Folder exists or not?
This approach will check for that “Folder exists” condition: if not create a root folder in the document
library and nth level of sub folders in it.
Level1: Check for folder exists; if not create a root folder
and nth sub folders in it.
Level2: If Root Folder exists; check for sub folder exists
if not create a sub folder in root folder and nth sub folders in it.
Level3: If sub folder exists; Check for sub sub folder
exists if not create a sub sub folder and nth sub folders in it.
…….
Up to Nth level.
Below code satisfy all of the above conditions:
string targetLoc="/DocLibName/FolderName/SubFolderName/" #region "Method: FolderCreation private void CreateFolder(string siteURL, string targetLoc) { string[] folderCnt = targetLoc.Split('/'); DOCUMENT_LIBRARY = folderCnt[0]; string folderURL = string.Empty; string docURL = siteURL + "/" + DOCUMENT_LIBRARY; try { using (SPSite site = new SPSite(siteURL)) { using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists.TryGetList(DOCUMENT_LIBRARY); string url = list.RootFolder.ServerRelativeUrl; for (int i = 1; i < folderCnt.Count(); i++) { folderURL = docURL += "/" + folderCnt[i]; //Check whether folder exists if (!web.GetFolder(folderURL).Exists) { //Create nth level sub folders CreateSubFolders(folderCnt, list, url, i); } else { url += "/" + folderCnt[i]; } _foldersPath += folderCnt[i] + "/"; } } } } catch (Exception ex) { LogExceptions(ex.InnerException.ToString()); } } private void CreateSubFolders(string[] folderCnt, SPList list, string folderURL, int j) { SPListItem newFolder = null; string url = folderURL; for (int i = j; i < folderCnt.Count(); i++) { newFolder = list.AddItem(url, SPFileSystemObjectType.Folder, folderCnt[i]); newFolder.Update(); url += "/" + folderCnt[i]; } } #endregion "Method: CreateFolders
Please let me if faced any issues while using the above my approach and kindly provide me yours valuable suggestions and feedbacks.
This is a great post, thank you for sharing! would you mind providing dev software requirements as well? also what should I add as a reference? I'm getting errors on SPList
ReplyDeletethanks!
I am starter C# on SharePoit 2010/2013
ReplyDeleteHow should I start the code?
Should I include?
using.microsoft.sharepoint.client
What class should I use?
Can you give an example?
Thanks
Peter
I am starter C# on SharePoit 2010/2013
ReplyDeleteHow should I start the code?
Should I include?
using.microsoft.sharepoint.client
What class should I use?
Can you give an example?
Thanks
Peter