SPListItem-Klasse
Steht für ein Element oder eine Zeile in einer Liste.
Vererbungshierarchie
System.Object
Microsoft.SharePoint.SPSecurableObject
Microsoft.SharePoint.SPItem
Microsoft.SharePoint.SPListItem
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Class SPListItem _
Inherits SPItem
'Usage
Dim instance As SPListItem
public class SPListItem : SPItem
Hinweise
Indexer können Sie ein einzelnes Element aus einer Liste Element-Auflistung zurückzugeben. Beispielsweise, wenn die Auflistung eine Variable mit dem Namen collListItemszugewiesen ist, verwenden Sie collListItems[index] in Microsoft C#- oder collListItems(index) in Microsoft Visual Basic, wobei index die Indexnummer des Elements in der Auflistung, oder den internen Namen ist oder Anzeigename des eines Listenfelds. Für eine Indexerstellung basierend auf einen Namen sucht Microsoft SharePoint Foundation zuerst für das Feld interne namentlich und dann nach Anzeigename.
Wichtig
Zur Verbesserung der Leistung und Optimieren der Anzahl der SQL Server-Abfragen, SharePoint Foundation müssen ausführen, GetItems oder eine andere GetItem* -Methode der SPList -Klasse zum Abrufen von Elementen basierend auf dem Wert der deren Felder verwenden. Die GetItems -Methode können Sie die Suchkriterien angeben, indem Sie eine Abfrage Collaborative Application Markup Language (CAML) über die SPQuery oder SPView -Klasse übergeben. Darüber hinaus kann Leistung beeinträchtigt werden, wenn eine Liste eine unnötig große Anzahl von Feldern enthält. Verwenden Sie die GetItemByIdSelectedFields(Int32, []) -Methode, um die Felder zu beschränken, die für ein Element abgerufen werden.
Um ein Feld in einem Listenelement mit einem Indexer Werte zuweisen, müssen die Werte in einem Format dargestellt werden, die für die einzelnen integrierten Feld geeignet ist. Die folgende Tabelle zeigt, wie die Datentypen, die in SharePoint Foundation Feldtypen verwendet werden zu Microsoft .NET Framework-Typen zugeordnet.
Name |
Format |
---|---|
Attachments |
System.Boolean |
Boolean |
System.Boolean |
Calculated |
k.A. |
Choice |
System.String |
Computed |
n/v |
Counter |
System.Int32 |
CrossProjectLink |
System.Boolean |
Currency |
System.Double |
DateTime |
System.DateTime |
GridChoice |
System.String |
Guid |
System.Guid |
Integer |
System.Int32 |
Lookup |
System.String |
MaxItems |
System.Int32 |
ModStat |
System.Int32 |
MultiChoice |
System.String |
Note |
System.String |
Number |
System.Double |
Recurrence |
System.Boolean |
Text |
System.String |
Threading |
System.String |
URL |
System.String, System.String |
User |
System.String |
Note |
System.String |
Im Gegensatz zu anderen Elemente im Objektmodell gibt die Indizierung für ein Feld DateTime Werte in Ortszeit auf der Website zurück. Legen Sie die DatesInUtc -Eigenschaft des SPQuery -Objekts auf true für die Indizierung zum Zurückgeben von Werten in koordinierter Weltzeit (UTC), in einer Abfrage. Wenn die Werte in Ortszeit zurückgegeben werden, und Sie in UTC zu konvertieren möchten, verwenden Sie die LocalTimeToUTC -Methode, wie folgt:
oWebsite.RegionalSettings.TimeZone.LocalTimeToUtc(date)
For more information about the conversion and format of date and time values in SharePoint Foundation, see Converting Date and Time Values.
Verwenden der SPListItem -Klasse, um ein Ereignis zu ändern, die mit einer Besprechungsarbeitsbereich-Website verknüpft ist Website aktualisiert nicht zugeordnete Besprechungsarbeitsbereich-Website und wird nicht unterstützt.
Der Typ, der für den Wert eines Felds Calculated zurückgegeben wird, hängt von der Ausgabetyp der berechneten Spalte.
Ein Feld Lookup enthält eine Zeichenfolge in der Form ID;#VALUE, wobei ID die Listenelement-ID und VALUE ist der Wert des Nachschlagefelds in der Liste weitere. Für mehrwertige Lookups enthält ein Lookup Feld eine Auflistung.
Der Wert eines Felds MultiChoice wird als Zeichenfolge dargestellt, alle ausgewählten Optionen, die durch ;#voneinander getrennt enthält.
Das Feld URL besteht eindeutig von zwei Zeichenfolgen, die durch ein Komma und ein Leerzeichen voneinander getrennt sind. Eine Zeichenfolge enthält den URL-Pfad und der andere die Beschreibung, die als Hyperlink-Text verwendet wird.
Sie können den Wert für ein Feld User mit einem SPUser -Objekt festlegen, wie im folgenden Beispiel dargestellt, die ein Element im Feld Assigned To einer Aufgaben-Liste aktualisiert.
Dim site As SPWeb =
SPControl.GetContextSite(Context).AllWebs("Site_Name")
Dim list As SPList = site.Lists("Tasks")
Dim listItem As SPListItem = list.Items(5)
listItem("Assigned To") = site.AllUsers("User_Name")
listItem.Update() '
using(SPWeb oWebsite = SPContext.Current.Site.AllWebs["Site_Name"])
{
SPList oList = oWebsite.Lists["Tasks"];
SPListItem oListItem = oList.Items[5];
oListItem["Assigned To"] = oWebsite.AllUsers["User_Name"];
oListItem.Update();
}
Ein Feld User enthält eine Zeichenfolge in der Form ID;#User_Display_Name, wobei ID Memberbezeichner (ID) des Benutzers zugeordnet ist. Im folgenden Beispiel wird analysiert den Wert eines Felds Assigned To , um ein SPUser -Objekt zurückzugeben.
Dim userValue As String = listItem("Assigned To")
Dim index As Integer = userValue.IndexOf(";")
Dim id As Integer = Int32.Parse(userValue.Substring(0, index))
Dim user As SPUser = site.SiteUsers.GetByID(id)
string strUserValue = oList["Assigned To"];
int intIndex = strUserValue.IndexOf(';');
int intID = Int32.Parse(strUserValue.Substring(0, intIndex));
SPUser oUser = oWebsite.SiteUsers.GetByID(intID);
Wenn Sie ein Listenelement erstellen, können Sie die Author, Editor, Createdund Modified Felder auf die gleiche Weise festlegen, die Sie anderen Felder eines SPListItem -Objekts festgelegt. Der Code muss mit Administratorrechten für Website, um ordnungsgemäß ausgeführt werden. Die Felder Author und Editor mithilfe von die numerische ID des Benutzers, die Sie über das Objektmodell erhalten können, indem Elemente des SPUser und zugehörige Klassen festgelegt. Die folgenden Beispiele zeigen, wie diese Felder festgelegt.
Beachten Sie, dass es sind keine Methoden oder Eigenschaften zum Abrufen der Metadaten für die aktuell genehmigte Version eines Listenelements. (Hierbei wird vorausgesetzt, dass Sie die Versionsverwaltung und Inhalte Genehmigung für das Listenelement aktiviert haben.) Um dieses Problem zu umgehen, können Sie Metadaten für die aktuelle genehmigte Version mithilfe der folgenden abrufen.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using System.Collections;
namespace GetListItemVersionInformation
{
class Program
{
static void Main(string[] args)
{
SPSite oSite = new SPSite("http://sigr8-1b:1000/sites/MyTestSite");
SPWeb oWeb = oSite.OpenWeb();
SPList oList = oWeb.Lists["MyCustomList"];
SPListItem oListItem = oList.Items.GetItemById(1);
SPListItemVersionCollection oVersionInfo = oListItem.Versions;
int i=0;
foreach (SPListItemVersion oVersion in oVersionInfo)
{
if (oVersion.Level == SPFileLevel.Published)
{
// here we retrieve all metadata properties
// for this item with the current approved version.
// after taking these values we can export them
Console.WriteLine(oListItem.Versions[i]["Address"].ToString());
Console.WriteLine(oListItem.Versions[i]["Title"].ToString());
Console.ReadLine();
return;
// after getting the latest approved version
// we are exiting the code
}
i++;
}
}
}
}
Beispiele
Im folgenden Codebeispiel wird eine Indexerstellung so überprüfen Sie den Wert eines bestimmten Felds in der angegebenen Liste verwendet. Wenn der Wert nicht "None" entspricht, werden Indexer für zwei anderen Felder verwendet, um Werte aus bestimmten Feldern anzuzeigen.
Dieses Beispiel erfordert using Direktiven (Imports in Microsoft Visual Basic) für die Namespaces Microsoft.SharePoint und Microsoft.SharePoint.Utilities .
Dim siteCollection As SPSite = SPControl.GetContextSite(Context)
Dim srcList As SPList =
siteCollection.AllWebs("Site_Name").Lists("List_Name")
Dim listItems As SPListItemCollection = srcList.Items
Dim listItem As SPListItem
For Each listItem In listItems
If listItem("Choice_Field_Name") <> "None" Then
Label1.Text += SPEncode.HtmlEncode(listItem("Field1_Name")) & "
:: " _
& SPEncode.HtmlEncode(listItem("Field2_Name")) & "<BR>"
End If
Next listItem
SPSite oSiteCollection = SPContext.Current.Site;
SPList oList =
oSiteCollection.AllWebs["Site_Name"].Lists["List_Name"];
SPListItemCollection collListItems = oList.Items;
foreach (SPListItem oListItem in collListItems)
{
if (oListItem["Choice_Field_Name"] != "None")
{
Label1.Text += SPEncode.HtmlEncode(oListItem["Field1_Name"]) + "
-- " +
SPEncode.HtmlEncode(oListItem["Field2_Name"]) + "<BR>";
}
}
Im vorherigen Codebeispiel setzt das Vorhandensein von einer ASPX-Seite, die ein Label-Steuerelement enthält.
Im folgenden Codebeispiel wird eine Liste mit Ankündigungen, mit Datum und Uhrzeit Indexer verschiedenen Feldern Werte zugewiesen ein Element hinzugefügt.
Dim site As New SPSite("http://Site_Name")
Dim web As SPWeb = site.OpenWeb("/")
Dim list As SPList = web.Lists("Announcements")
Dim item As SPListItem = list.Items.Add()
item("Title") = "My Item"
item("Created") = New DateTime(2004, 1, 23)
item("Modified") = New DateTime(2005, 10, 1)
item("Author") = 3
item("Editor") = 3
item.Update()
using (SPSite oSiteCollection = new SPSite("http://Site_Name"))
{
using (SPWeb oWebsiteRoot = oSiteCollection.OpenWeb("/"))
{
SPList oList = oWebsiteRoot.Lists["Announcements"];
SPListItem oListItem = oList.Items.Add();
oListItem["Title"] = "My Item";
oListItem["Created"] = new DateTime(2004, 1, 23);
oListItem["Modified"] = new DateTime(2005, 10, 1);
oListItem["Author"] = 3;
oListItem["Editor"] = 3;
oListItem.Update();
}
}
Hinweis
Certain objects implement the IDisposable interface, and you must avoid retaining these objects in memory after they are no longer needed. For information about good coding practices, see Disposing Objects.
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.