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.
非常感谢,
答案 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();