你好 stackoverflow 社区
我从这个论坛得到了很多帮助。虽然这次我找不到。
我制作了一个 ASP.NET 应用程序,并尝试使用 SharePoint WebService 来获取列表中的一些项目。
到目前为止,我成功地使用 CAML 请求获取了整个列表,但我必须选择 2 个给定日期之间的项目
我在这方面找到了很多帮助,我正在使用这种方法来格式化 ISO 8601 日期字符串:
private string FormatDateForCAML(DateTime theDate)
{
string result = theDate.ToString("yyyy-MM-ddTHH:mm:ssZ");
return result;
}
这是 CAML 请求构建:
System.Xml.XmlElement query = xmlDoc.CreateElement("Query");
query.InnerXml =
"<Where>"+
"<And>"+
"<Geq>"+
"<FieldRef Name=\"startdate\" />"+
"<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theStart + "</Value>" +
"</Geq>"+
"<Lt>" +
"<FieldRef Name=\"enddate\" />" +
"<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theEnd+ "</Value>" +
"</Lt>" +
"</And>"+
"</Where>";
此查询没有返回任何错误:
System.Xml.XmlNode nodeListItems = listService.GetListItems(listName, viewName, query, viewFields, rowLimit, queryOptions, null);
但是返回的列表是空的,虽然它不应该
谢谢你的帮助。
编辑:我终于成功了,问题来自一个错误的请求,这里是正确的版本
System.Xml.XmlElement query = xmlDoc.CreateElement("Query");
query.InnerXml =
"<Where>"+
"<And>"+
"<Geq>"+
"<FieldRef Name=\"startdate\" />"+
"<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theStart + "</Value>" +
"</Geq>"+
"<Lt>" +
"<FieldRef Name=\"startdate\" />" +
"<Value Type=\"DateTime\" IncludeTimeValue=\"True\">" + theEnd+ "</Value>" +
"</Lt>" +
"</And>"+
"</Where>";
感谢 Roqz,我使用了 CAML 查看器,我发现了问题:我只需要比较开始日期!
谢谢你们俩的帮助:)