【问题标题】:How to read WebPart Content using SharePoint Client OM?如何使用 SharePoint Client OM 读取 WebPart 内容?
【发布时间】:2012-08-02 15:07:16
【问题描述】:

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

问题是,我得到的结果是所有 WebPart 的列表,其中仅包含该 WebPart 的 ID 和一些基本信息(例如标题),但我需要读取 WebPart 本身的 XML 内容而不是阅读该 WebPart 的基本定义。

阅读WebPart 的内容 的最佳方式是什么?

提前感谢您的帮助。


PS。

根据 Trikks 的评论,我检查了 webpart 的内容。似乎内容未绑定到任何类型的列表或库。那里有一些自定义数据属性。这是示例:

<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>

我真正在寻找的是访问 WhenDetailWhereDetail 属性的值。

【问题讨论】:

  • 要理解这一点,您需要描述您的 Web 部件的功能以及它从何处获取数据。通常 Web 部件是显示 SharePoint 中列表和库中的数据的模块,您通常不会尝试访问 Web 部件内的数据。
  • 谢谢特里克。我将检查如何访问底层数据块并在之后更新问题。

标签: sharepoint com web-parts


【解决方案1】:

根据维克托·维伦的说法,

在使用 Web 部件时,客户端对象模型相当有限。可以完成添加和删除 Web 部件等基本操作以及更改 Web 部件的一些默认属性(如标题)。 无法访问自定义 Web 部件属性。

无法访问自定义 Web 部件属性。无法访问 Web 部件上的自定义属性或方法。如果您需要对远程客户端进行此类自定义,则必须将自己的远程 API 添加到 SharePoint。

更多详情请点击Here

为了获得所需的 webpart 详细信息,我结合使用了这两种方法。首先,我使用以下代码获取 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);

【讨论】:

  • 如果我的客户端上下文来自提供商托管的应用程序,我如何获取凭据?
  • 可以使用 CSOM 获取自定义 Web 部件属性,至少现在是这样。它们出现在Properties 集合中(如果您要求的话)。然而,获取 XML 或 Web 部件的类型目前正在躲避我
  • 自 2016 年 3 月起应该可以实现 - dev.office.com/blogs/…
猜你喜欢
  • 2014-02-21
  • 2011-10-10
  • 2011-05-10
  • 1970-01-01
  • 2020-08-10
  • 1970-01-01
  • 2013-03-08
  • 2021-03-02
  • 1970-01-01
相关资源
最近更新 更多