CAML > 通过URL获取项目

6

这个CAML查询语句应该是可以工作的。 (我用u2u测试过,但它没有显示URL列)。我收到了以下错误信息: {System.ApplicationException} = {"一个或多个字段类型未正确安装。请前往列表设置页面删除这些字段。"}

<Where>
 <Eq>
     <FieldRef Name='URL' />
     <Value Type='URL'>/path/HR Policy.docx</Value>
 </Eq>
</Where>

现在使用<Contains>而不是<where>,并且正常工作。 - Mina Kumari
2
URL字段中也会存储显示文本,因此您需要Contains节点。 - James Love
1个回答

6

在文档库中查询文档

看起来您正在尝试使用 CAML 在文档库中查找文档。您可以通过使用名为“FileRef”的隐藏列来实现:

<Where><Eq><FieldRef Name="FileRef"/><Value Type="Url">sites/SiteCollection/SubSite/Site Documents/Excel Report.xls</Value></Eq></Where>

注意:不要包含服务器名称或开头的/

使用URL字段查询文档或列表项

以下示例假定您已经设置了一个带有名为“我的文档”的URL列的列表或库。

链接指向托管在SharePoint服务器上的文档(不需要服务器名称):

<Where><Eq><FieldRef Name="My_x0020_Document"/><Value Type="URL">/sites/subsite/Site%20Documents/Excel%20Report.xls</Value></Eq></Where>

链接是指向服务器上不存在的绝对URL,例如 http://www.google.com:
<Where><Eq><FieldRef Name="My_x0020_Document"/><Value Type="URL">http://www.google.com</Value></Eq></Where>

1
@Kit Menke:我在这段代码中没有遇到那个错误。根据查询未返回任何记录,但我应该看到一个文件。 <Where><Eq><FieldRef Name="FileRef"/><Value Type="Url">sites/SiteCollection/SubSite/Site Documents/Excel Report.xls</Value></Eq></Where> - Mina Kumari
@Mina Kumari:你的文档路径是什么?你是否将其放入查询中?你能展示一下你正在尝试的确切查询吗? - Kit Menke
啊...你是在使用oQuery.ViewAttributes = "Scope=\"Recursive\"";吗?http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.viewattributes.aspx 由于它在一个文件夹中,你需要递归属性。 - Kit Menke
1
@Kit Menke,我的winform代码中确实有递归。我在u2u中尝试了您的修改,但是我没有看到递归选项。我将在winform中尝试修改并告诉您结果。谢谢。 - Mina Kumari
嘿,当我写下以下内容时它对我不起作用 - <Where><Eq><FieldRef Name="FileRef"/><Value Type="Url">/Sites/ASCAteam/GlobalBrandPlan/MigrationSpec-Rev-3rd_031915.xlsx</Value></Eq></Where> 但是它适用于直接位于文档下的文件 - <Where><Eq><FieldRef Name="FileRef"/><Value Type="Url">Documents/SharePointDeleteListItemExample.properties</Value></Eq></Where> - Tina Agrawal
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接