Wie kann ich das richtige spffielduservalue erhalten, um SPSITEDATAQUERY zu verwenden, um Aufgaben für einen bestimmten Benutzer zu aggregieren?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/91625

  •  10-12-2019
  •  | 
  •  

Frage

Ich versuche, alle Aufgaben eines bestimmten Inhaltstyps für einen bestimmten Benutzer zu sammeln.Um dies zu erreichen, benutze ich eine SPSITEDATAQUERY, die so aussieht: generasacodicetagpre.

Es funktioniert gut, wenn ich nur für den Inhaltstyp filtern möchte, aber das Filtern für den Benutzer fehlschlägt.

Ich denke, das Problem ist .. Das zugewiesene Feld enthält Werte, die so aussehen generasacodicetagpre.

aber mein regelmäßiger logname enthält die Ansprüche String und Domain und sieht so aus, dass sie so aussehen generasacodicetagpre.

Ich habe versucht, das spffielduservalue zu erstellen, um dieselbe Benutzerzeichenfolge zu erhalten, die im zugewiesenen Feld gefunden wird. generasacodicetagpre.

.. aber dann bekomme ich nur einen Wert, der so aussieht: generasacodicetagpre.

.. und ich bekomme immer noch keine ergebnisse aus meiner abfrage ..

Wie kann ich die richtige Zeichenfolge erhalten, um meine Abfrage auszuführen?

War es hilfreich?

Lösung

By changing the CAML like this:

string where = @"<Where>
                                        <And>
                                            <BeginsWith>
                                                <FieldRef Name='ContentTypeId'/>
                                                <Value Type='Text'>0x0108010031C20CDC28544f93B27958D36ACBE2F5</Value>
                                            </BeginsWith>
                                            <Eq>
                                                <FieldRef Name='AssignedTo' LookupId='TRUE' />
        <Value Type='Integer'><UserID /></Value>
                                            </Eq>
                                        </And>
                                     </Where>";
query.Query = where;
DataTable results = web.GetSiteData(query);

it will fetch for current user :)

If you need to specify another user you can use:

string where = String.Format(@"<Where>
                                        <And>
                                            <BeginsWith>
                                                <FieldRef Name='ContentTypeId'/>
                                                <Value Type='Text'>0x0108010031C20CDC28544f93B27958D36ACBE2F5</Value>
                                            </BeginsWith>
                                            <Eq>
                                                <FieldRef Name='AssignedTo' LookupId='TRUE' />
                                                <Value Type='Integer'>{0}</Value>
                                            </Eq>
                                        </And>
                                     </Where>", userValue.ToString());
query.Query = where;
DataTable results = web.GetSiteData(query);

and just make sue you have the ID of the user in userValue

Andere Tipps

The CAML Query for fetching the values for current user is:

"<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID Type='Integer' /></Value></Eq></Where>";

And for another user it should be as mentioned by @Robert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top