SPSiteDataQuery: Filtern von Inhaltstypen in SharePoint 2010

In SharePoint 2007 Ausführung einer SPSiteDataQuery mit filter für content-Typen wie erwartet funktionierte.

<Where>
  <Eq>
    <FieldRef Name='ContentType'/>
    <Value Type='Text'>SomeContentType</Value>
  </Eq>
</Where>

In SharePoint 2010 die gleiche Abfrage gibt nur Elemente aus einer Liste.
Eine mögliche Abhilfe wäre, um filter auf den Inhaltstyp-id. Ein "BeginsWith" - operator verwendet werden, da die "Liste " Inhaltstyp" erbt von der "site content type":

<Where>
  <BeginsWith>
    <FieldRef Name='ContentTypeID'/>
    <Value Type='Text'>SomeContentTypeId</Value>
  </BeginsWith>
</Where>

Aber das würde passen alle Elemente, die mit diesem Inhaltstyp oder alle geerbten Inhalte geben. Das ist nicht das, was ich will.

Weiß jemand, wie man erstellen Sie eine SPSiteDataQuery mit content-type-filter?

Ich mag die Schönheit des seins in der Lage, wählen Sie alle vererbten Inhaltstypen. Warum wählen Sie die ID mithilfe BeginsWith stattdessen können Sie auswählen, welche Inhaltstypen oder sogar EndsWith?!
Es ist nicht ein EndsWith element in CAML, ist es?
Du hast Recht, sorry. Aber Contains existiert.
Hast du eine Lösung für dieses? Etwas seltsam ist, die ich miterlebt habe, die mit dem Inhaltstyp-name ist wie folgt :
Hierarchie der Home > News > multiple year webs. Inhalte Arten befinden sich innerhalb von Jahr webs! Eine Abfrage bei den root gibt nichts, wo so eine Abfrage an der 'News' - Ebene tut etwas zurückgeben. Also, Es kann cross-Liste!? nur nicht bei der root-Ebene. BUG!?

InformationsquelleAutor Stefan | 2010-09-29

Schreibe einen Kommentar