CAML-Abfrage, einschließlich Ordner im ResultSet

Ich versuche zu schreiben, die eine CAML-Abfrage, die ausgeführt wird, gegen eine bestimmte SPList, eingeschränkt auf einen bestimmten Ordner, rekursiv von diesem Punkt, und gibt alle ListItems (erfüllen Kriterien) und Ordner.

Hier ist der code für die Abfrage, die scheint, wie es funktionieren sollte (formatiert für bessere Lesbarkeit):

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();

So - Sie gibt nur die ListItems - keine Ordner.

Wenn ich entfernen die anderen Bedingungen aus der Abfrage, nur das verlassen der FSObjType=1 bekomme ich eine COM-Ausnahme "diese Aktion kann Nicht abgeschlossen werden. Bitte versuchen Sie es erneut."

Wenn ich dann entfernen Sie die ViewFields, so dass nur die Scope=RecursiveAll und FSObjType=1, bekomme ich ein leeres ResultSet zurück.

Hast du jemals das gelöst? Ich habe das gleiche problem, und es sei eine Lösung, ich muss gehen Sie vor und tatsächlich schreiben Sie eine rekursive Funktion, es zu tun.
leider Nein, ich bekam nie diese, um korrekt zu arbeiten.
wenn Sie eine Lösung finden, bitte hier posten!

InformationsquelleAutor Rex M | 2009-10-13

Schreibe einen Kommentar