Share via


SPListItem 类

表示列表中的项或行。

继承层次结构

System.Object
  Microsoft.SharePoint.SPSecurableObject
    Microsoft.SharePoint.SPItem
      Microsoft.SharePoint.SPListItem

命名空间:  Microsoft.SharePoint
程序集:  Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)

语法

声明
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首先查找字段的内部名称,然后按显示名称。

重要信息注释重要信息

以提高性能和优化该SharePoint Foundation的 SQL Server 查询数必须执行,请使用GetItemsSPList类的另一种GetItem*方法检索根据其字段的值的项目。GetItems方法,可以通过传递协作应用程序标记语言 (CAML) 查询通过SPQuerySPView类指定搜索条件。此外,如果列表包含不必要地大量字段列表性能可能会受到威胁。使用GetItemByIdSelectedFields(Int32, [])方法来限制为某个项目检索的字段。

若要将值分配给中使用索引器的列表项的字段,必须适用于每个内置字段类型的格式表示的值。下表显示如何在SharePoint Foundation字段类型中使用的数据类型映射到 Microsoft.NET Framework 类型。

名称

格式

Attachments

System.Boolean

Boolean

System.Boolean

Calculated

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字段的索引器在网站上返回本地时间值。在查询中,设置为true返回值以通用协调时间 (UTC) 与索引器的SPQuery对象的DatesInUtc属性。如果您想要将其转换为 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是列表项 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) 中的字符串。下面的示例分析Assigned To域可返回SPUser对象的值。

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和相关的类的成员的数值 ID 设置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++;
         }
      }
   }
}

示例

下面的代码示例使用索引器以验证指定的列表中的特定字段的值。如果值不等于"None",两个其他字段的索引器用于显示特定字段的值。

此示例要求对Microsoft.SharePointMicrosoft.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>";
    }
}

前面的代码示例假定存在包含标签控件的.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.

线程安全性

该类型的任何公共 静态 (已共享 在 Visual Basic 中) 成员都是线程安全的。不保证任何实例成员都是线程安全的。

另请参阅

引用

SPListItem 成员

Microsoft.SharePoint 命名空间