gpt4 book ai didi

sharepoint - 包含结果集中文件夹的 CAML 查询

转载 作者:行者123 更新时间:2023-12-04 01:30:04 26 4
gpt4 key购买 nike

我正在尝试编写针对特定 SPList 执行的 CAML 查询,范围限定为特定文件夹,从该点开始递归,并返回所有 ListItems(满足条件)和文件夹。

这是查询的代码,它看起来应该可以工作(为了可读性而格式化):

SPQuery query = new SPQuery();
query.Query = "
<Where>
<Or>
<Contains>
<FieldRef Name=\"FileRef\" />
<Value Type=\"Text\">foo</Value>
</Contains>
<Eq>
<FieldRef Name=\"FSObjType\" />
<Value Type=\"Lookup\">1</Value>
</Eq>
</Or>
</Where>";

query.ViewFields = "
<FieldRef Name=\"CustomField1\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField2\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField3\" Nullable=\"TRUE\" />
";

query.RowLimit = 500;
query.ViewAttributes = "Scope=\"RecursiveAll\"";
query.Folder = startingFolder;
DataTable dt = myList.GetItems(query).GetDataTable();

所以 - 这只会返回 ListItems - 没有文件夹。

如果我从查询中删除其他条件,只留下 FSObjType=1 , 我收到 COM 异常“无法完成此操作。请重试。”

如果我然后删除 ViewFields,只留下 Scope=RecursiveAllFSObjType=1 ,我得到一个空的结果集。

最佳答案

每个人都很接近,但并不完全正确。

using (SPSite site = new SPSite("http://server/site"))
{
SPWeb web = site.RootWeb; // See disposal guidance http://blogs.msdn.com/b/rogerla/archive/2008/10/04/updated-spsite-rootweb-dispose-guidance.aspx

SPQuery query = new SPQuery();
query.Query = @"
<Where>
<BeginsWith>
<FieldRef Name='ContentTypeId' />
<Value Type='ContentTypeId'>0x0120</Value>
</BeginsWith>
</Where>";
query.ViewAttributes = "Scope='RecursiveAll'";
SPList list = web.Lists[listId];
SPListItemCollection items = list.GetItems(query);
// Do stuff with your folders
}

首先,使用这个 FieldRef 是错误的:
<FieldRef Name='ContentType' /><Value Type='Text'>Folder</Value>

因为文件夹内容类型可以继承。因此,您需要与内容类型 ID 进行比较,如下所示:
<Where>
<BeginsWith>
<FieldRef Name='ContentTypeId' />
<Value Type='ContentTypeId'>0x0120</Value>
</BeginsWith>
</Where>

然后,将 View 属性 Scope 设置为 RecursiveAll
<View Scope='RecursiveAll'>...</View>

这应该返回其内容类型继承自 Folder (0x0120) 的任何项目

关于sharepoint - 包含结果集中文件夹的 CAML 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com