質問

クライアントオブジェクトモデルを使用して、ドキュメントライブラリに新しいドキュメントリンクを追加する必要があります。 「ドキュメントへのリンク」アイテムで使用されている.aspxファイルの形式をコピーして、通常のファイルとしてアップロードできると思われますが、よりきちんとした方法があることを望んでいます。

したがって、私がやりたいことは、以下のコードサンプルと同じですが、新しいドキュメントを作成する代わりに、ドキュメントへの新しいリンクを作成したいと思います。

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();

更新:このフォーラムのMODによると、別の質問でWebサービスでこれを行う方法を尋ねることは許可されていないので、この質問のタイトル、タグ、コンテンツを変更します。 SharePoint Webサービスやサーバーサイドコントロールなどで挿入を行う方法を知っている人はいますか?

役に立ちましたか?

解決

それはできることが判明しましたが、それはドキュメントリンクの.aspxファイルSharePointの使用のコピーを取得し、文字列検索を実行してそれに置き換えることを含む少しハックです SharePointドキュメントライブラリでプログラムで「ドキュメントへのリンク」アイテムを作成する.

クライアントオブジェクトモデルを使用するために例を調整しました。

 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();

(うまくいけば、MODはこの答えが再び価値がないとは思わないことを願っています。これらのプログラミングWebサイトのMODSは、体重を投げ始める前にStackOverFlowの担当者を取得する必要はありません。)

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top