Класс 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,indexcollListItems[] в Microsoft C# илиindexcollListItems() в Microsoft Visual Basic, где index — индекс элемента в коллекции или внутреннее имя или отображаемое имя поля списка. Для индексатора, по имени Microsoft SharePoint Foundation сначала ищет поле внутреннее имя, а затем отображаемое имя.

Важно!

Для повышения производительности и оптимизации, SharePoint Foundation число запросов SQL Server необходимо выполнить, используйте GetItems или другой метод GetItem* класса SPList для извлечения элементов на основе значения в полях. Метод GetItems позволяет задать условия поиска, передав Collaborative Application Markup Language (CAML) query через класс SPQuery или SPView . Кроме того список производительности может представлять угрозу безопасности, если список содержит чрезмерно большое количество полей. Используйте метод GetItemByIdSelectedFields(Int32, []) для ограничения поля, полученные для элемента.

Для присвоения значений поля в элемент списка с помощью индексатора, значения должны быть представлены в формате, который подходит для каждого типа встроенных полей. В следующей таблице показаны как типы данных, которые используются в SharePoint Foundation поле типы сопоставляются с типами Microsoft платформа.NET Framework.

Имя

Формат

Attachments

System.Boolean

Boolean

System.Boolean

Calculated

N/A

Choice

System.String

Computed

N/A

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 возвращает значения по местному времени на веб-узле. В запросе присвойте свойству DatesInUtc объекта SPQuery для true для индексатора для возврата значений в формате общего скоординированного времени (UTC). Если значения возвращаются в формате местного времени, необходимо преобразовать их в формат UTC используйте метод LocalTimeToUTC следующим образом:

oWebsite.RegionalSettings.TimeZone.LocalTimeToUtc(date)

Дополнительные сведения о преобразовании и форматирования значений даты и времени в SharePoint FoundationConverting Date and Time Valuesсм.

С помощью класса SPListItem , чтобы изменить событие, с которым связана рабочая узел связанных собраний не обновляется и не поддерживается.

Тип возвращается значение поля Calculated , зависит от типа вывода вычисляемого столбца.

Поле Lookup содержит строку в форме ID;#VALUE, где ID — идентификатор элемента списка, а VALUE — это значение для поля подстановки в другом списке. Для многозначных подстановок поле Lookup содержит коллекцию.

Значение поля MultiChoice представляется как строка, содержащая все выбранные варианты, разделенные ;#.

Поле URL однозначно состоит из двух строк, разделенных запятой и пробелом. URL-адрес содержит одну строку, а другой содержит описание, которое используется в качестве текста гиперссылки.

Можно задать значение для поля User с объектом SPUser , как показано в следующем примере, который обновляет элемент списка задач в поле Assigned To .

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 . Код должен быть запущен с правами администратора веб-узла, для правильной работы. Задайте поля Author и Editor с помощью числовой идентификатор пользователя, который можно получить при помощи модели объектов с помощью членам SPUser и связанные с ним классы. Следующие примеры показывают, как эти поля можно установить.

Обратите внимание, что нет методов и свойств для извлечения метаданных для текущего утвержденного версии элемента списка. (Это предполагает, включено управление версиями и содержимого утверждения элемента списка). Чтобы обойти эту проблему, можно получить метаданные с помощью следующих текущая утвержденная версия

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++;
         }
      }
   }
}

Примеры

В следующем примере кода используется индексатор, чтобы проверить значение определенного поля в указанном списке. Если значение не равно «Нет», индексаторы для двух полей используются для отображения значений из отдельных полей.

В этом примере требуется директивы using (Imports в Microsoft Visual Basic) для пространства имен Microsoft.SharePoint и 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>";
    }
}

В предыдущем примере предполагается существование страница ASPX, которая содержит элемент управления label.

Следующий пример кода добавляет элемент в список извещений, использование индексаторов даты и времени для присвоения значений различных полей.

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();
    }
}

Примечание

Некоторые объекты реализуют интерфейс IDisposable и следует избегать сохранения этих объектов в памяти, после они больше не нужны. Disposing Objectsсведения о рекомендованные методы программирования, см.

Потокобезопасность

Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.

См. также

Справочные материалы

Элементы SPListItem

Пространство имен Microsoft.SharePoint