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

时间:2011-11-22 12:22:35

标签: c# sharepoint caml

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

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

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

Select Name from Authors where genericId = 1

然后将camlQuery传递给ListItems 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>";

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

但它引发了一个例外:

Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.

非常感谢,

3 个答案:

答案 0 :(得分:1)

我认为教你如何“自己”而不是给你正确答案会很好。

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

P.S。 LT代表不到,GT代表大于。在你的情况下你需要Eq(相等)。

祝你好运。

答案 1 :(得分:0)

您可以使用
U2U CAML Query Builder for SharePoint 2003 and SharePoint 2007
创建CAML查询 U2U CAML Query Builder Feature -
或者您可以使用LINQ to SharePoint作为替代方案(如果您已获得SharePoint 2010)

答案 2 :(得分:0)

检查此方法非常容易创建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();