无法使用CAML获取主文件夹中的所有文件夹和文件(在所有级别下)

问题描述 投票:0回答:2

我在共享点在线远程事件接收器中有以下CAML查询,在这里我试图获取所有直接和间接添加到名为FolderA的文件夹的文件和文件夹:-

camlQuery6.ViewXml = "<View Scope=\"RecursiveAll\"><Query><Where><Eq><FieldRef Name=\"FileDirRef\" /><Value Type=\"Text\">" + context.Web.ServerRelativeUrl + "/ArchDocs/FolderA"</Value></Eq></Where></Query></View>";
ListItemCollection collListItem6 = context.Web.GetList(context.Web.ServerRelativeUrl + "/ArchDocs").GetItems(camlQuery6);
context.Load(collListItem6, items => items.Include(
      item => item.Id,
      item=>item["FileDirRef"],
      item => item["Title"],
      item => item["DealStage"]));

上面的CAML仅返回/ sites / projects / ArchDocs / FolderA下的主文件夹,但不返回任何子文件夹和文件。不支持这个?

sharepoint sharepoint-online caml
2个回答
0
投票

使用以下解决方案:

var _List = context.Web.Lists.GetByTitle("MyDoc3");
                CamlQuery camlQuery = new CamlQuery();
                camlQuery.ViewXml = @"<View Scope='RecursiveAll'>
                                     <Query>
                                     </Query>
                                 </View>";
                Folder folder = context.Web.GetFolderByServerRelativeUrl("/sites/lee/MyDoc3/ParentFolder");
                context.Load(folder);
                context.ExecuteQuery();
                camlQuery.FolderServerRelativeUrl = folder.ServerRelativeUrl;
                ListItemCollection listItems = _List.GetItems(camlQuery);
                context.Load(listItems, items => items.Include(
                      item => item.Id,
                      item => item["FileDirRef"],
                      item => item["FileRef"],
                      item => item["Title"]));

                context.ExecuteQuery();

0
投票

该查询仅直接返回该文件夹中的项目,因为您的CAML设置为仅返回FileDirRef(或文件夹路径)等于/sites/projects/ArchDocs/FolderA的项目,子文件夹中的任何内容都将具有不同的[C0 ],例如FileDirRef,它不会与您指定的路径等于。您想要使用的是/sites/projects/ArchDocs/FolderA/SubFolder1,而不是<Eq>运算符。

Note,您的字符串连接<BeginsWith>]似乎也有语法错误

尝试一下:

context.Web.ServerRelativeUrl + "/ArchDocs/FolderA"</Value>
© www.soinside.com 2019 - 2024. All rights reserved.