Класс 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) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.