private IEnumerable <Microsoft.SharePoint.Client.File> GetFiles(Microsoft.SharePoint.Client.Folder folder) { var files = new List <Microsoft.SharePoint.Client.File>(); folder.EnsureProperties(f => f.Folders, f => f.ServerRelativeUrl, f => f.ServerRelativePath, f => f.ListItemAllFields); if (folder.Folders.Any()) { foreach (var subfolder in folder.Folders) { files.AddRange(GetFiles(subfolder)); } } var folderFiles = folder.EnsureProperty(f => f.Files); files.AddRange(folderFiles); return(files); }
private BaseNode DoSPFolder(Microsoft.SharePoint.Client.Folder folder, BaseNode parentNode, BaseNode rootNode, bool isRoot = false) { BaseNode myNode = null; folder.EnsureProperties(f => f.Folders, f => f.Files, f => f.Name, f => f.ServerRelativeUrl); try { myNode = new FolderNode(folder); if (!isRoot) { parentNode.Children.Add(myNode); } myNode.SPObject = folder; myNode.ParentNode = parentNode; myNode.RootNode = rootNode; myNode.NodeConnector = this; myNode.LoadedData = true; folder.Context.Load(folder.Folders); folder.Context.ExecuteQueryRetry(); try { foreach (var subfolder in folder.Folders.OrderBy(f => f.Name)) { BaseNode childNode = new FolderNode(subfolder); myNode.Children.Add(childNode); childNode.SPObject = subfolder; childNode.ParentNode = myNode; childNode.RootNode = rootNode; childNode.NodeConnector = this; } foreach (var file in folder.Files.OrderBy(f => f.Name)) { BaseNode fileNode = new FileNode(file); myNode.Children.Add(fileNode); fileNode.SPObject = file; fileNode.ParentNode = parentNode; fileNode.RootNode = rootNode; fileNode.NodeConnector = this; try { // if (fileNode.Title != null && fileNode.Title.Contains(".")) { var els = fileNode.Title.Split('.'); string extension = "." + els[els.Length - 1]; //Icon icon = Icon.ExtractAssociatedIcon(file.FullName); Icon icon = ShellIcon.GetSmallIconFromExtension(extension); fileNode.IconObject = icon.ToBitmap(); if (fileNode.IconObject.Width != 16) { fileNode.IconObject = new Bitmap(fileNode.IconObject, 16, 16); }/**/ } } catch (Exception) { //skip if exception happens here... the default icon will be shown } } } catch { return(myNode); } } catch { return(myNode); } return(myNode); }