2009-06-08 1 views
3

Ich möchte alle Elemente aus einer bestimmten Liste im Besprechungsarbeitsbereich abrufen. Ich habe versucht, die folgende CAML auszuführen:In einem Besprechungsarbeitsbereich erhalten Sie alle Tagesordnungspunkte aus einer programmgesteuerten Liste

Aber es zeigt nur Daten für das bevorstehende Treffen an.

Wenn ich jedoch die Liste öffne, kann ich im Aktionsmenü auswählen, dass Daten aus allen Meetings angezeigt werden sollen. Das lässt mich denken, dass es möglich ist. Ich weiß, dass ich die Liste in Serienartikel umwandeln kann, damit sie in allen Meetings erscheinen, aber das will ich nicht.

Antwort

5

Yeehaaw!

Endlich habe ich eine Lösung gefunden! SPQuery Klasse hat eine Eigenschaft MeetingInstanceId, die man Sie einen Wert eines bestimmten InstanceID (zB 20090615 für den 15. Juni 2009 Positionen) zuordnen können oder alle Elemente abfragen Sie es SPMeeting.SpecialInstance Enum-Wert zuweisen müssen (nicht vergiss es auf int zu werfen).

Dann führen Sie einfach Ihre Abfrage aus, um Elemente aus dem gewünschten Arbeitsbereich zu erhalten.

Oh, und vergessen Sie nicht

using Microsoft.SharePoint.Meetings; 

Oder Sie können mit SPMeeting.SPecialInstance ommit, aber verwenden integere direkt von -3 bis 0

Beispielcode:

using(SPSite site = new SPSite(<enter your workspace url>)) 
using (SPWeb web = site.OpenWeb()) 
{    
    SPQuery query = new SPQuery(); 
    query.MeetingInstanceId = (int)SPMeeting.SpecialInstance.AllButSeries; 
    query.Query = @"<Query> 
         <Where> 
          <IsNotNull> 
          <FieldRef Name='ID' /> 
          </IsNotNull> 
         </Where> 
        </Query>"; 

    SPList list = web.Lists[<enter your list>]; 
    foreach (SPListItem item in list.GetItems(query)) 
    { 
     Console.WriteLine(item[item.Fields.GetFieldByInternalName("Title").Id]); 
    } 
} 

Es hat so lange gedauert, bis dies gefunden wurde. Wahrscheinlich nicht zu viele Informationen im Internet für dieses Problem oder ich wählte nicht die richtigen Keywords, aber trotzdem Kredit an this Quelle für an erster Stelle für Keywords bekommen "Get alle Listenelemente sharepoint Arbeitsbereich wiederkehrend".

Ich hoffe, das hilft anderen.

+0

Für mich ist die Signatur für "GetListItems" -Methode 'public System.Xml.Linq.XElement GetListItems (Zeichenfolge ListName, Zeichenfolge ViewName, System.Xml.Linq.XElement Abfrage, System. Xml.Linq.XElement viewFields, Zeichenfolge rowLimit, System.Xml.Linq.XElement queryOptions, Zeichenfolge webID) ' Es verwendet' XElement', nicht 'XmlElement' weder' XmlNOde'. Und ich bekomme den gleichen Fehler darüber. – Kiquenet

0

Ich denke, die Standardansicht der Liste zeigt nur die nächsten Besprechungslistenelemente und nicht die Besprechungslistenelemente in der Vergangenheit.

Wenn Sie die Sicht, auf der Sie Ihre CAML-Abfrage ausführen, nicht angeben, werden alle Elemente aus der Standardansicht abgerufen. Verwenden Sie die Ansicht "Alle Elemente" (Ansicht "Alle Ereignisse", wenn es sich um einen Kalender handelt) anstelle der Standardansicht, und legen Sie die Eigenschaft "SPQuery.ExpandRecurrence" auf "true" fest.

+0

Schade, aber SPQuery.ExpandRecurrende Eigenschaft wird nicht helfen. Ebenso wie die Ansicht AllItems werden nicht alle wiederkehrenden Besprechungen angezeigt, sondern nur diese. Es sind insgesamt 3 Ansichten verfügbar: Teilnehmer (AllItems.aspx), Teilnehmer verwalten (ManageA.aspx) und default.aspx Allerdings, wenn ich die Daten aus dem Browser bekomme ich sehe, dass es eine Zeichenfolge an url - InstanceID = ALL und das gibt alle Daten zurück ... –

Verwandte Themen