如何创建CAML查询来检索列表项

本文关键字:查询 检索 列表 CAML 何创建 创建 | 更新日期: 2023-09-27 18:15:20

XmlElement camlQuery = Build(); // how to implement this?

我有一个名为Authors的SharePoint list,它有一个genericId字段。

如何为如下内容编写CAML查询:

Select Name from Authors where genericId = 1

然后camlQuery将传递给listtitems sharepoint web服务:

http://msdn.microsoft.com/en-us/library/lists.lists.getlistitems (v = office.12) . aspx

我所尝试的是创建一个xml元素如下:

 XmlDocument xmlDoc = new XmlDocument();
 XmlElement camlQuery = xmlDoc.CreateElement("Query");
 camlQuery.InnerXml = "<Where><Lt><FieldRef Name='genericId'/><Value Type='Integer'>9</Value></Lt></Where>";

然后将其传递给getlisttitems()服务(不确定Lt或Gt等的含义是什么?)

但是会抛出一个异常:

Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.
许多谢谢,

如何创建CAML查询来检索列表项

我觉得最好是教你自己写,而不是只给你正确的答案。

我假设你在当地有一个农场。在sharepoint列表中创建一个视图,并使用过滤器使其返回正确的结果。然后下载此工具http://spm.codeplex.com/并导航到您的视图。然后将视图的CAML复制并粘贴到代码中。

注:LT代表小于,GT代表大于。在这种情况下,你将需要Eq (equal)。

好运。

您可以使用
创建CAML查询U2U CAML查询生成器用于SharePoint 2003和SharePoint 2007,
U2U CAML查询生成器功能-
或者你可以用LINQ来代替SharePoint(如果你有SharePoint 2010)

检查这种方法非常容易创建caml查询,甚至运行查询:Link

cawl_QueryBuilder cawl = new cawl_QueryBuilder;
cawl.Where("FirstName","=","Mike");
cawl.Where("Status","!=","Passive");
cawl.Get("Users");
Gridview1.Datasource= cawl.ListItemCollection().GetDataTable();
Gridview1.Databind();