// Hier wird das ganze was wir mit dem Elternordner gemacht haben für die Unterordner und deren // Unterordner bzw. Dateien noch mal getan. Gibt es weitere Unterordner wird die Funktion rekursiv aufgerufen. private void FillTWI_TreeView(IList <SharePointFolder> folderList) { List <SharePointFolder> subfolderList = new List <SharePointFolder>(); foreach (SharePointFolder folder in folderList) { if (folder.GetSubFolders().Count > 0) { subfolderList.Add(folder); } foreach (SharePointFolder subFolder in folder.GetSubFolders()) { TreeNode parentNode; try { parentNode = FindTreeNode(subFolder.GetFolderName()); } catch (Exception ex) { MessageBox.Show(ex.Message); logger.Error(ex.Message + "/n" + ex.StackTrace); logger.Debug("Subfoldername: " + subFolder.GetFolderName()); return; } if (parentNode != null) { TWI_TreeView.BeginUpdate(); parentNode.Nodes.Add(folder.GetFolderName(), folder.GetFolderName(), 0, 0); this.folderList.Add(new TreeNode(folder.GetFolderName())); TWI_TreeView.EndUpdate(); } } if (folder.GetFiles().Count > 0) { foreach (SharePointFile file in folder.GetFiles()) { TreeNode parentNode; try { parentNode = FindTreeNode(folder.GetFolderName()); } catch (Exception ex) { MessageBox.Show(ex.Message); logger.Error(ex.Message + "/n" + ex.StackTrace); logger.Debug("Foldername: " + folder.GetFolderName()); return; } if (parentNode != null) { TWI_TreeView.BeginUpdate(); parentNode.Nodes.Add(file.GetName(), file.GetName(), 1, 1); this.fileList.Add(new TreeNode(file.GetName())); TWI_TreeView.EndUpdate(); } } } } if (subfolderList.Count > 0) { FillTWI_TreeView(subfolderList); } }
// In der Funktion FillTWI_TreeView wird der Treeview aufgebaut es wird der oberste Ordner hinzugefügt // und geprüft ob dieser noch Unterordner besitzt. Wenn ja werden die Unterordner ebenfalls auf Unterordner und Dateien // geprüft, falls die Unterordner welche besitzen werden sie in eine Liste gespeichert. Anschließend werden // die Unterordner des Parentordners in den TreeView gespeichert. private void FillTWI_TreeView() { TWI_TreeView.BeginUpdate(); TWI_TreeView.Nodes.Add(this.parent.GetFolderName()); TWI_TreeView.EndUpdate(); List <SharePointFolder> folderList = new List <SharePointFolder>(); if (this.parent.GetSubFolders().Count > 0) { foreach (SharePointFolder subFolder in this.parent.GetSubFolders()) { if (subFolder.GetSubFolders().Count > 0 || subFolder.GetFiles().Count > 0) { folderList.Add(subFolder); } TWI_TreeView.BeginUpdate(); TWI_TreeView.Nodes[0].Nodes.Add(subFolder.GetFolderName(), subFolder.GetFolderName(), 0, 0); this.folderList.Add(new TreeNode(subFolder.GetFolderName())); TWI_TreeView.EndUpdate(); } } if (this.parent.GetFiles().Count > 0) { foreach (SharePointFile file in this.parent.GetFiles()) { TWI_TreeView.BeginUpdate(); TWI_TreeView.Nodes[0].Nodes.Add(file.GetName(), file.GetName(), 1, 1); this.fileList.Add(new TreeNode(file.GetName())); TWI_TreeView.EndUpdate(); } } if (folderList.Count > 0) // folderList ist die Liste mit den Unterordnern des Elternordners, die entweder andere Unterordner oder Dateien enthalten. { FillTWI_TreeView(folderList); } }
// Eventhandler für den Drop von Dateien in das WindowsForm bzw. den Treeview // hier wird der Dateipfad übergeben, über den wir an die Dateien kommen, die hochgeladen werden sollen. // Die Dateipfade werden in das Stringarray "files" gespeichert und in der foreach-Schleife durchlaufen. // Am Anfang der Funktion wird die Klasse SharePointFileUploader initialisiert, damit die Klasse die ganze // Funktion über ansprechbar ist. private void TWI_TreeView_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); //SharePointFileUploader fileUploader = new SharePointFileUploader(this.baseUrl, this.subWebsite, this.user, this.password, this.subPage, this.listName, this.filter); foreach (string file in files) { SharePointFile newSPFile = new SharePointFile(); string[] parts = file.Split('\\'); // Teilt die Dateipfade am Trennstrich '\' und speichert diese in das stringarray parts newSPFile.SetName(parts[parts.Length - 1]); // Das letzt Element des Arrays ist der Name der Datei. Point targetPoint = TWI_TreeView.PointToClient(new Point(e.X, e.Y)); // Hier wird bestimmt wo die Dateien im Treeview gedroped wurden. TreeNode parentNode = TWI_TreeView.GetNodeAt(targetPoint); if (parentNode != null) { // Hier wird geprüft ob die gedropte Datei auf einem TreeNode gedropt wurde, // der in der fileList drin ist. Wenn dem so ist wird der parentNode auf den Parent // von sich selbst verwiesen, weil jede Datei in einem Ordner liegen muss. foreach (TreeNode node in this.fileList) { if (node.Text == parentNode.Text) { parentNode = parentNode.Parent; } } } SharePointFolder parentFolder; try { parentFolder = FindParentFolder(parentNode.Text); } catch (ArgumentException ex) { MessageBox.Show(ex.Message); logger.Error(ex.Message + "\n" + ex.StackTrace); logger.Debug("ParentNodeText: " + parentNode.Text); return; } Drag_Drop(this, new DragDropEventArgs(file, parentFolder.GetServerRelativeUrl())); /*fileUploader.SetUrl(parentFolder); * * // Hier wird die Datei über die Klasse SharePointFileUploader hochgeladen. * try { * fileUploader.SetConnection(); * fileUploader.UploadFile(file, parentFolder); * * } catch (Exception ex) { * MessageBox.Show(resourceManager.GetString("errorUploading") + newSPFile.GetName() + "\n" + resourceManager.GetString("filepath") + file + "\n\n" + ex.Message); * logger.Error(ex.Message + "\n" + ex.StackTrace); * logger.Debug(resourceManager.GetString("errorUploading") + newSPFile.GetName() + "\n" + resourceManager.GetString("filepath") + file + "\n\n" + ex.Message); * return; * } * } * // Am Ende wird die aktualisierte Liste neu geladen. * this.AddSharePointData(fileUploader.UpdateSharePointDataList()); */ } }