Question

Actuellement, j'ai un code qui crée un Dossier dans le Documents répertoire lors de l'exécution:

using (var context = new Microsoft.SharePoint.Client.ClientContext(sharePointSite))
{
    context.Credentials = new Microsoft.SharePoint.Client.SharePointOnlineCredentials(user, password);

    Web web = context.Web;

    Microsoft.SharePoint.Client.List docs = web.Lists.GetByTitle(<upper level folder>);
    docs.EnableFolderCreation = true;

    docs.RootFolder.Folders.Add(folderName);

    context.ExecuteQuery();

    return true;
}

Je vais avoir des ennuis de créer des sous dossiers dans les dossiers que j'ai créé à l'aide de ce code déjà.Donc, comme si je voulais créer un dossier appelé Feb en vertu de Documents cela permettrait de le faire.Mais si j'ai voulu créer un dossier appelé Week 2 sous le nouveau dossier Feb.Il n'allons pas le faire.J'obtiens cette erreur:

{"List 'Feb' does not exist at site with URL 'https://my.sharepoint.com/sites/labels'."}

Je me rends compte que le problème est probablement docs.RootFolder.Folders.Add(folderName); parce que Feb ne serait pas le dossier racine et quand il cherche une exception sera levée.

Alors j'espérais que quelqu'un pourrait m'aider avec un peu de code pour ajouter des sous-dossiers à déjà créé des dossiers.Je suis à l'aide de Visual Stuidos 2010 et ne peut pas mettre à 2012 sinon je le ferais.J'ai l'2013 Microsoft.Sharepoint.Client dll peuvent être référencées dans VS 2010.

Était-ce utile?

La solution

Comment créer un Dossier (y compris imbriquée) via otite chronique dans SharePoint 2010/2013

/// <summary>
/// Create Folder client object
/// </summary>
/// <param name="web"></param>
/// <param name="listTitle"></param>
/// <param name="fullFolderUrl"></param>
/// <returns></returns>
public static Folder CreateFolder(Web web, string listTitle, string fullFolderUrl)
{
    if (string.IsNullOrEmpty(fullFolderUrl))
        throw new ArgumentNullException("fullFolderUrl");
    var list = web.Lists.GetByTitle(listTitle);
    return CreateFolderInternal(web, list.RootFolder, fullFolderUrl);
}

private static Folder CreateFolderInternal(Web web, Folder parentFolder, string fullFolderUrl)
{
    var folderUrls = fullFolderUrl.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
    string folderUrl = folderUrls[0];
    var curFolder = parentFolder.Folders.Add(folderUrl);
    web.Context.Load(curFolder);
    web.Context.ExecuteQuery();

    if (folderUrls.Length > 1)
    {
        var subFolderUrl = string.Join("/", folderUrls, 1, folderUrls.Length - 1);
        return CreateFolderInternal(web, curFolder, subFolderUrl);
    }
    return curFolder;
}

L'utilisation de la

 using (var ctx = new ClientContext("https://contoso.onmicrosoft.com/"))
 {
       ctx.Credentials = new Microsoft.SharePoint.Client.SharePointOnlineCredentials("username", "password");
       var folder = CreateFolder(ctx.Web, "Shared Documents", "FolderA/SubFolderA/SubSubFolderA");
 }

Comment obtenir le Dossier client de l'objet

public static Folder GetFolder(Web web, string fullFolderUrl)
{
    if (string.IsNullOrEmpty(fullFolderUrl))
        throw new ArgumentNullException("fullFolderUrl");

    if (!web.IsPropertyAvailable("ServerRelativeUrl"))
    {
        web.Context.Load(web,w => w.ServerRelativeUrl);
        web.Context.ExecuteQuery();
    }
    var folder = web.GetFolderByServerRelativeUrl(web.ServerRelativeUrl + fullFolderUrl);
    web.Context.Load(folder);
    web.Context.ExecuteQuery();
    return folder;
}

L'utilisation de la

var existingFolder = GetFolder(ctx.Web, "Shared Documents/FolderA/SubFolderA/SubSubFolderA");

Autres conseils

Vous pouvez créer des Dossiers comme ceci:

Microsoft.SharePoint.Client.List docs = web.Lists.TryGetList("upper level folder");
FolderCollection folderColl = docs.RootFolder.SubFolders;
Folder newFolder = folderColl.Add("upper level folder/Feb/Week 2");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top