2009-11-04 7 views
0

Suite à ma question précédente here, dans laquelle j'ai répondu comment créer un dossier dans une bibliothèque de documents. J'ai maintenant besoin de créer un dossier dans une liste, mais il semble que l'approche webDav ne fonctionne pas.SharePoint: Comment créer un dossier dans une liste à l'aide des services Web

Est-ce que quelqu'un a un extrait de code pour créer un dossier dans une liste en utilisant les services web ou webdav?

Merci

Dans le code suivant aucune erreur est produit, mais le dossier ne soit pas créé:

private void createFolderUsingWebDav(string siteAddress, string listAddress, string folderName) 
     { 

      string folderAddress = siteAddress + @"/" + listAddress + @"/" + folderName; 
      HttpWebResponse response; 
      try 
      { 
       HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create(folderAddress); 
       request.Credentials = wsLists.Credentials; // CredentialCache.DefaultCredentials; 
       request.Method = "MKCOL"; 
       response = (System.Net.HttpWebResponse)request.GetResponse(); 
       response.Close(); 
      } 
      catch (WebException ex) 
      { 
       if (ex.Status != WebExceptionStatus.ProtocolError) 
       { 
        throw ex; 
       } 
      } 
     } 

Sous une inspection plus poussée, les dossiers physiques sont créés, j'ai vérifié cela en cartographie un lecteur à sharepoint puis naviguez vers le dossier de la liste, mais les dossiers ne sont pas visibles dans la liste. Je crée également des dossiers en utilisant l'interface Web sur la liste sont visibles dans la vue, mais physiquement je ne vois aucune différence entre ces derniers et le dossier créé à l'aide dav Web

Répondre

1

trouvé quelque chose qui fonctionne:

XmlDocument doc = new XmlDocument(); 
      XmlElement batch = doc.CreateElement("Batch"); 
      string item = "<Method ID=\"1\" Cmd=\"New\">" + 
       "<Field Name=\"ID\">New</Field>" + 
       "<Field Name=\"FSObjType\">1</Field>" + 
       "<Field Name=\"BaseName\">" + folderName + "</Field></Method>"; 

      batch.SetAttribute("ListVersion", "1"); 
      batch.InnerXml = item; 

      wsLists.UpdateListItems(listAddress, batch); 
Questions connexes