2010-01-21 3 views
0

Bon, voici le scénario ... J'ai créé un sous-dossier dans une bibliothèque de documents, et quand un élément est ajouté à la bibliothèque de documents, je veux faire un peu de traitement sur le document, puis déplacez l'élément dans le sous-dossier, par exemple MySubFolder. À cette fin, je vais utiliser cette instructionComment obtenir le GUID d'un sous-dossier dans une bibliothèque de documents par programme

SPListItem folder = this.workflowProperties.List.Folders[]; 

mais la collection Folders [] prendra un index int ou un guid. Parce que je le fais dans un flux de travail, je ne sais pas comment obtenir le guid du dossier ici. Veuillez noter que je ne peux pas utiliser l'URL pour obtenir le GUID ici car le même flux de travail est appliqué à un certain nombre de bibliothèques de documents et j'ai le sous-dossier MySubFolder dans chacun d'entre eux, donc donner l'URL semble un peu ringard ici je pense.

Répondre

0

Je n'ai pas Sharepoint ici en ce moment, mais vous devriez être en mesure de le faire:

Guid folderId = Guid.Empty; 
foreach (SPFolderCollection folder in YourList.Folders) 
{ 
    if (folder.Name == "MySubFolder") 
    { 
     folderId = folder.UniqueId; 
     break; 
    } 
} 

Ou, dans votre gestionnaire d'événements, construire l'URL de votre dossier:

public override void ItemDeleting(SPItemEventProperties properties) 
{ 
    Uri folderAddress = new Uri(properties.BeforeUrl, "MySubFolder"); 
    SPFolder folder = yourWeb.GetFolder(folderAddress.ToString()); 
} 
+0

Merci beaucoup pour votre code, je recevais une erreur disant YourList.Folder retourne SPListItems et il couldnt b converti en SPFolderCollection. Mais votre solution m'a définitivement mis sur la bonne voie et j'ai trouvé la solution ci-dessous :) merci – ria

0

Je résolu il en faisant ce qui suit:

Guid folderId = Guid.Empty; 
SPFolder spFolder = web.Folders[this.workflowProperties.List.Title].SubFolders["MySubFolder"]; 
folderId=spFolder.UniqueId; 
Questions connexes