Question

Je dois ajouter un nouveau lien de document à une bibliothèque de documents en utilisant le modèle objet client. Je pense que je pourrais copier le format du fichier .aspx utilisé dans les éléments « lien vers un document » et le télécharger comme un fichier normal, mais j'espère qu'il ya une façon plus propre.

Alors ce que je veux faire est le même que l'exemple de code ci-dessous, mais au lieu de créer un nouveau document que je veux créer un nouveau lien vers un document.

ClientContext context = new ClientContext("http://wdev2008:22880");
context.Load(context.Web);
List list = context.Web.Lists.GetByTitle("Test Doc Link Library");
context.Load(list);
context.ExecuteQuery();

FileCreationInformation fileCreateInfo = new FileCreationInformation();
fileCreateInfo.Content = new byte[] { 0x33 };
fileCreateInfo.Url = "zerobyte";
File file = list.RootFolder.Files.Add(fileCreateInfo);
context.Load(file);
context.ExecuteQuery();

Mise à jour: Selon le mod sur ce forum, je ne suis pas autorisé à demander comment faire cela avec un service Web dans une autre question, donc je vais changer le titre, les balises et le contenu sur cette question. Est-ce que quelqu'un sait comment faire l'insert avec un service Web SharePoint ou le contrôle côté serveur ou autre chose?

Était-ce utile?

La solution

Il se trouve que cela peut être fait, mais il est un peu un hack qui implique de prendre une copie des utilisations SharePoint de fichier .aspx pour les liens de documents et de faire une recherche de chaîne et de le remplacer sur elle Création d'un « lien vers un document » élément dans une bibliothèque de documents SharePoint programme.

J'adapté l'exemple d'utiliser le modèle objet client:

 string docLinkTemplate = null;
 using (System.IO.StreamReader sr = new System.IO.StreamReader("SharePointDocLinkTemplate.txt"))
 {
     docLinkTemplate = sr.ReadToEnd();
 }

 string docLink = "http://myserver/test.doc";
 docLinkTemplate = String.Format(docLinkTemplate, docLink);

 FileCreationInformation fileCreateInfo = new FileCreationInformation();
 fileCreateInfo.Content = Encoding.UTF8.GetBytes(docLinkTemplate);
 fileCreateInfo.Url = "testlinkfordoc.doc.aspx";
 File file = list.RootFolder.Files.Add(fileCreateInfo);
 ListItem fileListItem = file.ListItemAllFields;
 fileListItem["ContentType"] = "Link to a Document";
 FieldUrlValue urlValue = new FieldUrlValue();
 urlValue.Description = "Link to doc test";
 urlValue.Url = docLink;
 fileListItem["URL"] = urlValue;
 context.Load(file);
 context.ExecuteQuery();

(Espérons que le mod ne le jugent indigne de réponse encore. Pitié pour les mods sur ces sites Web de programmation ne pas obtenir rep stackoverflow avant de pouvoir commencer à jeter leur poids autour.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top