【问题标题】:Sharepoint Caml共享点凸轮
【发布时间】:2012-02-01 15:58:07
【问题描述】:

我正在使用 php 和 caml 从 sharepoint 检索列表,只是它似乎带回了一个最小列表,我想知道如何设置列表视图以显示所有列表项,而不是默认的最小列表。我现在不是 sharepoint 方面的专家,这是我第一次使用 caml,所以请原谅我在这个问题上的菜鸟。

这是我的查询

<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">  
          <listName>'.$list.'</listName> 
          <rowLimit>'.$limit.'</rowLimit>
          '.$queryXML.'
          <queryOptions xmlns:SOAPSDK9="http://schemas.microsoft.com/sharepoint/soap/" >              
              <QueryOptions/> 
          </queryOptions> 
        </GetListItems>'

我填写了列表并限制变量,它会从 sharepoint 恢复默认列表视图,但我想添加一个功能,即只恢复列表中的所有内容或告诉它恢复哪些列,但我我几乎没有运气在互联网上搜索这个:(

提前感谢您的回复

【问题讨论】:

    标签: php sharepoint list caml


    【解决方案1】:

    您应该首先查看位于List.GetListItems 的Web 服务方法的文档。您需要为 ViewFields 参数提供要返回的字段。

    创建 CAML 查询不适合胆小的人。存在很多差异,并且该语言用于许多不相关的任务。从本机对象模型执行 CAML 查询与调用 Web 服务略有不同。幸运的是,U2U 创建了CAML Query Builder,它允许您通过选择要连接的方法(在您的情况下为 Web 服务)、所需的列表、字段、过滤和排序标准来创建 CAML 查询。

    如果您以 SharePoint 2010 为目标,您可能希望避免使用(古老的)Web 服务并使用 REST/OData API。 OData 是一个类似于 GData 的 API,用于访问各种数据源,可以轻松过滤、选择,最重要的是,对所有数据源都是统一的。您可以直接从您的代码中调用 REST API,也可以使用 OData SDK for PHP 为您的列表生成一个代理类,这将使您能够以非常简单的方式执行查询。

    查看“Introduction to querying lists with REST”了解 REST API 的精彩介绍。

    【讨论】:

      【解决方案2】:

      您使用的是 SP 2013 还是 2010?如果是 2013 年,我建议使用 SP 的 Rest 服务。它使用起来容易得多,而且您不必使用那种疯狂的 CAML。 https://msdn.microsoft.com/en-us/library/office/fp142380.aspx?f=255&MSPPError=-2147217396

      【讨论】:

        【解决方案3】:

        您需要进入SharePoint上的列表设置并设置负责显示一定数量记录的项目限制。如果不指定视图名称,则使用默认视图。如果此默认视图设置为批量显示项目或显示有限数量的项目,那么您将仅获取该数量的记录。这一切都将通过 UI 在列表/库设置中进行设置。如果您确实指定了 CAML 查询以及所有选项,则视图将被忽略,您将获得 CAML 查询返回的所有记录。这是一个定义新 CAML 查询的示例(尽管在 C# 中),其中使用了视图 ID(在大括号之间),此外还提供了一个 CAML 查询。这缩小了从该视图获取的结果。您可以轻松地 google 以了解如何找到列表 ID。

        XmlDocument xmlDoc = new System.Xml.XmlDocument();
        XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
        XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");
        ndQueryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" + "<DateInUtc>FALSE</DateInUtc>";
        XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
        ndQuery.InnerXml = "<Where><Eq><FieldRef Name='LinkTitle'/><Value Type='Text'>New Tasks</Value></Eq></Where>";
        XmlNode confNode = listsSvc.GetListItems("NotificationConfig", "{92428C7A-3F35-41B2-AEC4-B8B1C7E64533}", ndQuery, null, null, ndQueryOptions, null);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-01
          • 1970-01-01
          • 2014-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多