Freigeben über


Gewusst wie: Zurückgeben von Elementen aus einer Liste

Letzte Änderung: Freitag, 9. April 2010

Gilt für: SharePoint Foundation 2010

Zum Zurückgeben von Elementen aus einer Liste können Sie eine der GetItem*-Methoden der SPList-Klasse verwenden, um ein SPListItemCollection-Objekt abzurufen, das das von Ihnen benötigte bestimmte Element oder die Teilgruppe von Elementen darstellt. In der folgenden Liste sind die durch SPList bereitgestellten Methoden aufgeführt.

Methode

Beschreibung

GetItemById(Int32)

Gibt das Listenelement mit der angegebenen ganzzahligen ID zurück.

GetItemByIdAllFields(Int32)

Gibt das Listenelement mit der angegebenen ganzzahligen ID zurück und schließt die Daten für alle Felder des Elements ein.

GetItemByIdSelectedFields(Int32, [])

Gibt das Listenelement mit der angegebenen ganzzahligen ID zurück und schließt nur die Werte für bestimmte Felder ein.

GetItemByUniqueId(Guid)

Gibt das Listenelement zurück, das mit der angegebenen GUID (Global Unique Identifier, global eindeutiger Bezeichner) verbunden ist.

GetItems()

Überladen. Gibt eine Auflistung der Elemente aus der Liste zurück.

GetItemsWithUniquePermissions()

Überladen. Gibt eine Auflistung von Listenelementen zurück, die keine Sicherheitsberechtigungen von der Liste erben sondern eine eindeutige Gruppe von Berechtigungen besitzen.

Im folgenden Beispiel werden Elemente aus der Kalenderliste der aktuellen Website zurückgegeben, wenn das Ereignis nach einem angegebenen Datum auftritt. Zur Leistungsverbesserung wird im Beispiel die GetItems(SPQuery)-Methode verwendet, um den Umfang der Abfrage auf eine eingeschränkte Gruppe von Elementen zu begrenzen. Im Beispiel wird ein Konstruktor zum Instanziieren eines SPQuery-Objekts verwendet, und dann wird der Query-Eigenschaft des Abfrageobjekts eine Zeichenfolge in Collaborative Application Markup Language (CAML) zugewiesen, die das innere XML für die Abfrage angibt (d. h. das <Where>-Element). Nachdem die Query-Eigenschaft festgelegt wurde, wird das Abfrageobjekt an die GetItems-Methode übergeben, um Elemente zurückzugeben und anzuzeigen.

Dim listTitle As String = TextBox1.Text
Dim mySite As SPWeb = SPContext.Current.Web 
Dim myList As SPList = mySite.Lists(listTitle)

Dim myQuery As New SPQuery()

myQuery.Query = "<Where><Geq><FieldRef Name = ""EventDate""/>" & _
    "<Value Type = ""DateTime"">2010-06-01</Value></Geq></Where>"

Dim myItems As SPListItemCollection = myList.GetItems(myQuery)

For i As Integer = 0 To myItems.Count - 1
    Dim item As SPListItem = myItems(i)

    Label1.Text += SPEncode.HtmlEncode(item("Title").ToString()) & _
        SPEncode.HtmlEncode(item("Start Time").ToString()) & _
        SPEncode.HtmlEncode(item("End Time").ToString()) & "<BR>"
Next
string listTitle = TextBox1.Text;
SPWeb mySite = SPContext.Current.Web;
SPList myList = mySite.Lists[listTitle];

SPQuery myQuery = new SPQuery();

myQuery.Query = "<Where><Geq><FieldRef Name = \"EventDate\"/>" +
    "<Value Type = \"DateTime\">2010-06-01</Value></Geq></Where>";

SPListItemCollection myItems = myList.GetItems(myQuery);

for (int i = 0; i < myItems.Count; i++) 
{
    SPListItem item = myItems[i]; 

    Label1.Text +=  SPEncode.HtmlEncode(item["Title"].ToString()) + " : " +
        SPEncode.HtmlEncode(item["Start Time"].ToString()) + " : " + 
        SPEncode.HtmlEncode(item["End Time"].ToString()) + "<BR>"; 
}

Im vorherigen Beispiel wurde das Vorhandensein eines Textfelds vorausgesetzt, das zum Eingeben des Namens einer Liste verwendet wird, und eines Etiketts zum Anzeigen der zurückgegebenen Elemente. Die Indexerstellung wird sowohl zum Zurückgeben der Liste verwendet, die vom Benutzer eingegeben wurde, sowie zum Aufzählen der Elementauflistung. Wenn Sie einzelne Elemente verwenden möchten, werden mit der Indexerstellung die Namen von Spalten angegeben, aus denen Werte abgerufen werden sollen. In diesem Fall gehören die angegebenen Feldnamen zu einer standardmäßigen SharePoint Foundation-Kalenderliste.

Wichtiger HinweisWichtig

Beachten Sie, dass im Beispiel die von der Items-Eigenschaft zurückgegebene Elementauflistung einem SPListItemCollection-Objekt zugewiesen wird, das dann aufgelistet wird, anstatt beispielsweise myList.Items[i] in der Schleife aufzulisten. Dadurch wird die Leistung verbessert, da ohne diese Logik die Schleife bei jeder Iteration die gesamte Elementauflistung neu erstellen würde.

Im folgenden Beispiel werden nur die Werte der Title-Spalte zurückgegeben, bei denen der Wert der Stock-Spalte 100 übersteigt.

Dim mySite As SPWeb = SPContext.Current.Web
Dim list As SPList = mySite.Lists("Books") 

Dim query As New SPQuery() 
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>" 

Dim myItems As SPListItemCollection = list.GetItems(query) 
Dim item As SPListItem 

For Each item In myItems 
   Response.Write(SPEncode.HtmlEncode(item("Title").ToString()) & "<BR>") 
Next item
SPWeb mySite = SPContext.Current.Web;
SPList list = mySite.Lists["Books"]; 

SPQuery query = new SPQuery(); 
query.Query = "<Where><Gt><FieldRef Name='Stock'/><Value Type='Number'>100</Value></Gt></Where>"; 

SPListItemCollection myItems = list.GetItems(query); 

foreach (SPListItem item in myItems) 
{ 
   Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>"); 
}

Im Beispiel wird das Vorhandensein einer Books-Liste vorausgesetzt, die eine Stock-Spalte mit Zahlen enthält.

HinweisHinweis

Im vorherigen Beispiel sind using-Direktiven (Imports in Visual Basic) für beide Namespaces Microsoft.SharePoint und Microsoft.SharePoint.Utilities erforderlich.

Listenübergreifende Abfragen

Sie können listenübergreifende Abfragen ausführen, um Daten auf mehreren Websites effizienter abzufragen. Im folgenden Beispiel wird die SPSiteDataQuery-Klasse zum Definieren einer Abfrage verwendet, und anschließend wird die GetSiteData-Methode zum Zurückgeben von Elementen aus einer standardmäßigen SharePoint Foundation-Aufgabenliste (durch ServerTemplate = "107" angegeben) verwendet, für die die Status-Spalte den Wert Completed besitzt. Eine Liste der SharePoint Foundation-Servervorlagen finden Sie unter SPListTemplateType.

Dim webSite As SPWeb = SPContext.Current.Web
Dim query As New SPSiteDataQuery()

query.Lists = "<Lists ServerTemplate=""107"" />"
query.Query = "<Where><Eq><FieldRef Name=""Status""/>" & 
"<Value Type=""Text"">Completed</Value></Eq></Where>"

Dim items As System.Data.DataTable = webSite.GetSiteData(query)
Dim item As System.Data.DataRow

For Each item In items
   Response.Write((SPEncode.HtmlEncode(item("Title").ToString()) + "<BR>"))
Next item
SPWeb webSite = SPContext.Current.Web;
SPSiteDataQuery query = new SPSiteDataQuery();

query.Lists = "<Lists ServerTemplate=\"107\" />";
query.Query =
   "<Where><Eq><FieldRef Name=\"Status\"/>" +
   "<Value Type=\"Text\">Completed</Value></Eq></Where>";

System.Data.DataTable items = webSite.GetSiteData(query);

foreach (System.Data.DataRow item in items)
{
   Response.Write(SPEncode.HtmlEncode(item["Title"].ToString()) + "<BR>");
}

Für dieses Beispiel sind using-Direktiven (Imports in Visual Basic) für die beiden Namespaces Microsoft.SharePoint und Microsoft.SharePoint.Utilities erforderlich.

Siehe auch

Referenz

Microsoft.SharePoint

Konzepte

Gewusst wie: Lesen des Werts eines Felds in einem Listenelement

Arbeiten mit Listenobjekten und Auflistungen

Verwenden von Visual Studio für die SharePoint-Enwicklung

Sicherheitsüberprüfung und POSTs zum Aktualisieren von Daten

Rechteerweiterungen