如何创建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.
许多谢谢,
我觉得最好是教你自己写,而不是只给你正确的答案。
我假设你在当地有一个农场。在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();