Sharepoint Caml


Sharepoint Caml

我正在使用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带回了默认的列表视图,但我想添加一种功能,即只带回列表中的所有内容,或者告诉它要带回哪些列,但我在互联网上搜索时运气很差:(

提前感谢您的回复

您应该首先在List.GetListItems中检查web服务方法的文档。您需要为ViewFields参数提供要返回的字段。

创建CAML查询不适合胆小的人。有很多差异,语言被用于许多不相关的任务。从本机对象模型执行CAML查询与调用web服务略有不同。幸运的是,U2U已经创建了CAML查询生成器,它允许您通过选择要连接的方法(在您的情况下是Web服务)、所需的列表、字段、筛选和排序条件来创建CAML查询。

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

请参阅"使用REST查询列表简介",了解REST API的精彩介绍。

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

您需要转到SharePoint上的列表设置,并设置负责显示一定数量记录的项目限制。如果未指定视图名称,则使用默认视图。如果此默认视图设置为分批显示项目或显示有限数量的项目,则您将仅获取该数量的记录。这一切都将通过UI在列表/库设置中进行设置。如果您在指定所有选项的同时指定CAML查询,则视图将被忽略,您将获得CAML查询返回的所有记录。这里有一个定义新CAML查询的例子(虽然是C#中的),其中使用了视图ID(在大括号之间),此外还提供了一个CAML查询。这会缩小从该视图获取的结果。你可以很容易地在谷歌上搜索如何找到列表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);