SPListItem class
表示清單中的項目或資料列。
Inheritance hierarchy
System.Object
Microsoft.SharePoint.SPSecurableObject
Microsoft.SharePoint.SPItem
Microsoft.SharePoint.SPListItem
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'宣告
Public Class SPListItem _
Inherits SPItem
'用途
Dim instance As SPListItem
public class SPListItem : SPItem
備註
您可以使用索引器清單項目集合中傳回單一項目。例如,若集合已指派給變數collListItems,使用collListItems[index]的 Microsoft C# 或collListItems(index) Microsoft Visual Basic 中,其中index是集合或內部名稱中項目的索引編號或清單] 欄位的顯示名稱。按照名稱索引器、 Microsoft SharePoint Foundation先看起來欄位的內部名稱,然後依顯示名稱。
重要
提升效能並最佳化 SQL Server 查詢數目該SharePoint Foundation必須執行,請使用GetItems或SPList類別的另一種GetItem*方法來擷取其欄位的值為基礎的項目。GetItems方法可讓您指定傳遞到SPQuery或SPView類別的共同作業應用程式標記語言 (CAML) 查詢的搜尋準則。此外,如果清單包含整天大量的欄位,可能會危害清單效能。使用GetItemByIdSelectedFields(Int32, [])方法來限制擷取項目的欄位。
若要將值指派給使用索引器的清單項目中的欄位,值必須表示在適用於每個內建的欄位類型的格式。下表顯示如何SharePoint Foundation欄位類型中所使用的資料類型對應至 Microsoft.NET Framework 類型。
名稱 |
格式 |
---|---|
Attachments |
System.Boolean |
Boolean |
System.Boolean |
Calculated |
N/A |
Choice |
System.String |
Computed |
不適用 |
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 |
與物件模型中其他所有成員,不同DateTime欄位索引器會傳回值,以本地時間網站上。在查詢時,設SPQuery物件的DatesInUtc屬性為true的索引器,以傳回的值在標準國際時間 (UTC)。如果值都會以本地時間,而且您想要將其轉換成 UTC,使用LocalTimeToUTC方法,如下所示:
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.
使用SPListItem類別來修改事件連結至會議工作區網站不會更新相關聯的會議工作區網站,而且不受支援。
Calculated欄位的值會傳回類型而定的計算結果欄輸出類型。
Lookup ] 欄位包含在表單ID;#VALUE,其中ID是清單項目識別碼, VALUE是在 [其他] 清單中的查閱欄位的值的字串。多重值查閱的Lookup ] 欄位包含的集合。
MultiChoice欄位的值是以包含所有選取的選項以;#分隔的字串表示。
URL欄位唯一包含兩個以逗號和空格分隔的字串。一個字串會包含 URL 路徑與另一個包含會做為超連結的文字描述。
下列的範例中,會更新的任務清單項目Assigned To欄位中所示,您可以設定與SPUser物件, User欄位的值。
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();
}
User ] 欄位包含在表單ID;#User_Display_Name,其中ID是相關聯的使用者成員識別碼 (ID) 的字串。下列範例會將剖析傳回SPUser物件Assigned To欄位的值。
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);
當您要建立清單項目時,您可以設定Author、 Editor、 Created和Modified欄位設定SPListItem物件的其他欄位的相同方式。網站管理員的權限才能正確運作,必須執行程式碼。使用該使用者,您可以使用SPUser和相關的類別的成員取得透過物件模型的數值識別碼來設定Author和Editor欄位。下列範例顯示如何設定這些欄位。
請注意有沒有方法或屬性來擷取目前已核准版本的清單項目中繼資料。(這假定您已啟用版本設定及內容核准清單項目的)。若要解決此問題,您可以擷取目前的已核准版本,使用下列的中繼資料
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++;
}
}
}
}
Examples
下列程式碼範例會使用索引器,確認在指定的清單中特定欄位的值。如果值不等於"None",兩個其他欄位的索引器用以顯示特定欄位的值。
這個範例需要Microsoft.SharePoint和Microsoft.SharePoint.Utilities命名空間using指示詞 (Imports Microsoft Visual Basic 中)。
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>";
}
}
先前的程式碼範例會假設有一個包含 label 控制項的.aspx 頁面。
下列程式碼範例會將項目新增至 [宣告] 清單中,使用日期和時間的索引器,將值指派到不同的欄位。
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();
}
}
注意事項 |
---|
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. |
Thread safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.