1

私は SharePoint 開発の初心者で、SharePoint 2010 クライアント オブジェクト モデルを使用して WebPart のコンテンツを読み取ろうとしています。WebPart コンテンツを照会するために私が行っていることは次のとおりです。

ClientContext ctx = new ClientContext("http://foo");
File home = ctx.Web.GetFileByServerRelativeUrl("/SitePages/Page.aspx");
var wpm = home.GetLimitedWebPartManager(PersonalizationScope.Shared);

var query = wpm.WebParts.Include(wp => wp.Id, wp => wp.WebPart));
var webPartDefenitions = ctx.LoadQuery(query);

ctx.ExecuteQuery();

問題は、結果として得られるのは、ID とその WebPart のいくつかの基本情報 (タイトルなど) を含むすべての WebParts のリストですが、基本的な定義を読み取るのではなく、WebPart 自体の XML コンテンツを読み取る必要があることです。その WebPart の。

WebPart のコンテンツを読み取る最良の方法は何ですか?

事前にご協力いただきありがとうございます。


PS。

Trikks さんのコメントに従って、Web パーツのコンテンツを確認しました。コンテンツは、どのようなリストやライブラリにもバインドされていないようです。そこにはいくつかのカスタム データ プロパティがあります。サンプルは次のとおりです。

<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
    <metaData>
      <type name="NS.SPS2010.Internet.WebParts.VenueDetails.VenueDetails, NS.SPS2010.Internet.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=89259c78cb06b3885" />
    </metaData>
    <data>
      <properties>
        <property name="WhenDetail" type="string">Monday 12:PM</property>
        <property name="WhereDetail" type="string">London</property>
      </properties>
    </data>
  </webPart>

私が本当に探しているのは、WhenDetailおよびWhereDetailプロパティの値にアクセスすることです。

4

1 に答える 1

2

ウィクトール・ウィレンによれば、

クライアント オブジェクト モデルは、Web パーツの操作に関してかなり制限されています。Web パーツの追加や削除などの基本的な操作を実行できるだけでなく、Web パーツの一部の既定のプロパティ (タイトルなど) を変更することもできます。カスタム Web パーツ プロパティにはアクセスできません。

カスタム Web パーツ プロパティにはアクセスできません。Web パーツのカスタム プロパティまたはメソッドにアクセスする方法はありません。リモート クライアントでこの種のカスタマイズを行う必要がある場合は、独自のリモート API を SharePoint に追加する必要があります。

詳細については、ここをクリックしてください

Web パーツの必要な詳細を取得するために、両方の方法を組み合わせて使用​​しました。最初に、次のコードを使用して Web パーツの詳細のリストを取得しました。

ClientContext ctx = new ClientContext("http://foo");
File home = ctx.Web.GetFileByServerRelativeUrl("/SitePages/Page.aspx");
var wpm = home.GetLimitedWebPartManager(PersonalizationScope.Shared);

var query = wpm.WebParts.Include(wp => wp.Id, wp => wp.WebPart));
var webPartDefenitions = ctx.LoadQuery(query);

ctx.ExecuteQuery();

次に、Webpartpages Web サービスの GetWebPart2 メソッドを呼び出して、コンテンツをダウンロードします。

var client = new WebPartPagesWebService();
client.Url = siteRootAddress+"/_vti_bin/Webpartpages.asmx";
client.Credentials = credential;
// webPartId is a property of WebPart Defenition from the above code
var webPartXmlString = client.GetWebPart2(pageAddress, 
                                               webPartId, 
                                               Storage.Shared,
                                               SPWebServiceBehavior.Version3);

var webPartNode = XElement.Parse(webPartXmlString);
于 2012-08-08T23:25:18.397 に答える