How to configure CAML Query Options to show items inside specific folder
-
21-10-2020 - |
Domanda
I wrote a java program that uses SharePoint's Lists web service.
Right now, this is my CAML Query :
<Query>
<Where>
<Contains>
<FieldRef Name='FileDirRef'/><Value Type='Lookup'>SubFolder1</Value>
</Contains>
</Where>
</Query>
and this is my CAML Query Options :
<QueryOptions>
<ViewAttributes Scope='RecursiveAll' />
<OptimizeFor>FolderUrls</OptimizeFor>
</QueryOptions>
This is what my root folder looks like :
And my program returns all File3.txt, SubFolder2 and File4.txt
What should I do in order to only get the contents of SubFolder1 : File3.txt AND SubFolder2 ?
Also, Is there a way to place myself on a folder other than root ?
Soluzione
I finally found the answer I was looking for thanks to this Blog.
I deleted the CAML Query settings :
<Query>
<Where>
<Contains>
<FieldRef Name='FileDirRef'/><Value Type='Lookup'>SubFolder1</Value>
</Contains>
</Where>
</Query>
and added this line to my CAML Query Options file :
<Folder>http://MySharePointServer/Root/SubFolder1</Folder>
And changed the Scope to All
instead of RecursiveAll
so it would only bring items directly under SubFolder1.
So now this is my Final CAML Query Options File :
<QueryOptions>
<Folder>http://MySharePointServer/Root/SubFolder1</Folder>
<IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns>
<ViewAttributes Scope="All"/>
<DateInUtc>TRUE</DateInUtc>
</QueryOptions>
PS : you have to specify the hole URL to the SubFile. you cannot use RelativeUrl for this option.