SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure
How to: CAML-Query nur auf Ordnern ausführen

Blogs

Oliver Wirkus

Syndication

Certifications

Web 2.0

http://smits-net.de/img/linkedin_button.gif

XING

http://i80.photobucket.com/albums/j191/mikesamerica/twitter_button_zpsee74f711.png

 

 Add to Technorati Favorites

 

 Delicious Bookmark this on Delicious

 

  Locations of visitors to this page

 

Mit einer CAML-Query kann man sehr elegant Items aus einer SharePoint Liste oder Bibliothek auslesen. Was aber macht man, wenn man eine CAMl-Query braucht, die z.B. in einer Dokument-Bibliothek nach einem speziellen Folder suchen soll?

Ich konkretisiere den Anwendungsfall noch etwas: wir haben eine Dokument-Bibliothek, in der es viele Ordner (auch Unterordner) gibt. Gebraucht wird jetzt eine CAML-Query, die nach dem Ordner sucht, der z.B. eine CustomerID mit dem Wert 12345 hat. Es sollen aber ausschließlich Folder durchsucht werden – keine Items, die u.U. ebenfalls eine CustomerID von 12345 haben könnten!

Das kann man z.B. folgendermaßen lösen:

var sb = new StringBuilder(); sb.Append("<Where><And><Eq>"); sb.AppendFormat("<FieldRef Name='{0}'/>", "CustomerID"); sb.AppendFormat("<Value Type='Text'>{0}</Value>", "12345"); sb.Append("</Eq><Eq>"); sb.AppendFormat("<FieldRef Name='{0}'/>", list.Fields[SPBuiltInFieldId.FSObjType].InternalName); sb.AppendFormat("<Value Type='int'>{0}</Value>", (int)SPFileSystemObjectType.Folder); sb.Append("</Eq></And></Where>");

Der Trick besteht darin, zusätzlich neben der CustomerID auch noch ein Merkmal abzufragen, welches einen Folder kennzeichnet. Dazu gibt es das Field FSObjType.

Add to Technorati Favorites Delicious Bookmark this on Delicious Folge mir auf Twitter

Bereitgestellt 7 Sep 2011 20:30 von Oliver Wirkus
Gespeichert unter: ,