SPListItem class
Representa um item ou linha em uma lista.
Inheritance hierarchy
System.Object
Microsoft.SharePoint.SPSecurableObject
Microsoft.SharePoint.SPItem
Microsoft.SharePoint.SPListItem
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaração
Public Class SPListItem _
Inherits SPItem
'Uso
Dim instance As SPListItem
public class SPListItem : SPItem
Comentários
Você pode usar um indexador para retornar um único item de uma coleção de item de lista. Por exemplo, se a coleção é atribuída a uma variável denominada collListItems, use collListItems[deindex] no Microsoft c# ou collListItems(index) no Microsoft Visual Basic, onde index é o número de índice do item na coleção, ou o nome interno ou exibir o nome de um campo de lista. Para um indexador com base em um nome, Microsoft SharePoint Foundation procurará primeiro para o campo nome interno e depois por nome para exibição.
Importante
Para melhorar o desempenho e otimizar o número de consultas do SQL Server que SharePoint Foundation deve executar, use GetItems ou outro método GetItem* da classe SPList para recuperar itens com base no valor de seus campos. O método GetItems permite que você especifique critérios de pesquisa, passando-se uma consulta Markup Language CAML (Collaborative Application) por meio da classe SPQuery ou SPView . Além disso, o desempenho da lista pode ser comprometido se uma lista contém um desnecessariamente grande número de campos. Use o método GetItemByIdSelectedFields(Int32, []) para limitar os campos que são recuperados para um item.
Para atribuir valores a um campo em um item de lista, usando um indexador, os valores devem ser representados em um formato apropriado para cada tipo de campo internas. A tabela a seguir mostra como os tipos de dados que são usados em tipos de campo SharePoint Foundation são mapeados para tipos do Microsoft .NET Framework.
Nome |
Formatar |
---|---|
Attachments |
System.Boolean |
Boolean |
System.Boolean |
Calculated |
N/A |
Choice |
System.String |
Computed |
N/D |
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 |
Ao contrário de todos os outros membros do modelo de objeto, o indexador de um campo DateTime retorna valores em hora local no site. Em uma consulta, defina a propriedade DatesInUtc do objeto SPQuery para true para o indexador retornar valores no tempo Universal Coordenado (UTC). Se os valores são retornados em hora local e você deseja convertê-los em UTC, use o método LocalTimeToUTC , conforme segue:
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.
Usando a classe SPListItem para modificar um evento que esteja vinculado a um espaço de trabalho de reunião site não atualizará o site de espaço de trabalho de reunião associado e não é suportado.
O tipo é retornado para o valor de um campo Calculated depende do tipo de saída da coluna calculada.
Um campo Lookup contém uma sequência em que o formulário ID;#VALUE, onde ID é a ID de item de lista e VALUE é o valor do campo de pesquisa em outra lista. Para pesquisas de valores múltiplos, um campo Lookup contém uma coleção.
O valor de um campo MultiChoice é representado como uma cadeia de caracteres que contém todas as opções selecionadas separadas por ;#.
O campo URL exclusivamente consiste em duas cadeias de caracteres que são separadas por uma vírgula e um espaço. Uma cadeia de caracteres contém o caminho da URL e a outra contém a descrição que é usada como texto do hiperlink.
Você pode definir o valor de um campo User com um objeto SPUser , conforme mostrado no exemplo a seguir, que atualiza um item no campo Assigned To de uma lista de tarefas.
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();
}
Um campo User contém uma sequência em que o formulário ID;#User_Display_Name, onde ID é o identificador de membro (ID) do usuário associado. O exemplo a seguir analisa o valor de um campo Assigned To para retornar um objeto 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);
Quando você estiver criando um item de lista, você pode definir ao Author, Editor, Createde Modified campos da mesma maneira que você definiu outros campos de um objeto SPListItem . O código deve estar executando com direitos de administrador do site para funcionar corretamente. Defina os campos Author e Editor usando a ID numérica do usuário, que pode ser obtido através do modelo de objeto usando membros da SPUser e classes relacionadas. Os exemplos a seguir mostram como definir esses campos.
Observe que não há nenhuma métodos ou propriedades para recuperar os metadados para a versão aprovada atualmente um item de lista. (Isso pressupõe que você habilitou a aprovação de controle de versão e o conteúdo do item de lista). Para contornar esse problema, é possível recuperar metadados para a versão aprovada atual usando o seguinte
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
O exemplo de código a seguir usa um indexador para verificar o valor de um determinado campo na lista especificada. Se o valor não for igual a "None", indexadores para outros dois campos são usados para exibir valores de campos particulares.
Este exemplo requer using diretivas (Imports no Microsoft Visual Basic) para os namespaces Microsoft.SharePoint e 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>";
}
}
O exemplo de código anterior considera a existência de uma página. aspx que contém um controle label.
O exemplo de código a seguir adiciona um item a uma lista de comunicados, usando os indexadores de data e hora para atribuir valores aos campos diferentes.
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();
}
}
Dica
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.