Compartir a través de


Clase SPListItem

Representa un elemento o una fila de una lista.

Jerarquía de la herencia

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

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public Class SPListItem _
    Inherits SPItem
'Uso
Dim instance As SPListItem
public class SPListItem : SPItem

Comentarios

Puede usar un indizador para devolver un único elemento de una colección de elementos de lista. Por ejemplo, si la colección se asigna a una variable denominada collListItems, use collListItems[index] en Microsoft C# o collListItems(index) en Microsoft Visual Basic, donde index es el número de índice del elemento de la colección o el nombre interno o nombre para mostrar de un campo de lista. Para un indizador basándose en un nombre, Microsoft SharePoint Foundation buscará primero el campo por su nombre interno y a continuación, por nombre para mostrar.

Importante

Para mejorar el rendimiento y optimizar el número de consultas de SQL Server que SharePoint Foundation debe ejecutar, use GetItems o a otro método de GetItem* de la clase SPList para recuperar los elementos en función del valor de sus campos. El método GetItems permite especificar criterios de búsqueda, se pasa una consulta de lenguaje de marcado de aplicación de colaboración (CAML) a través de la clase SPQuery o SPView . Además, rendimiento de la lista puede estar en peligro si una lista contiene un número de campos innecesariamente grande. Utilice el método GetItemByIdSelectedFields(Int32, []) para limitar los campos que se recuperan de un elemento.

Para asignar valores a un campo de un elemento de lista con un indizador, los valores deben estar representados en un formato adecuado para cada tipo de campo integradas. La tabla siguiente muestra cómo se asignan los tipos de datos que se usan en los tipos de campo SharePoint Foundation a tipos de Microsoft .NET Framework.

Nombre

Formato

Attachments

System.Boolean

Boolean

System.Boolean

Calculated

N/D

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

A diferencia de todos los demás miembros del modelo de objetos, el indizador para un campo de DateTime devuelve los valores de hora local en el sitio. En una consulta, establezca la propiedad DatesInUtc del objeto SPQuery en true para el indizador devolver los valores de hora Universal coordinada (UTC). Si se devuelven los valores de hora local y desea convertirlos a la hora UTC, utilice el método LocalTimeToUTC , como se indica a continuación:

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.

Uso de la clase SPListItem para modificar un evento que está vinculado a un área de reuniones sitio no actualizará el sitio de área de reuniones asociado y no se admite.

El tipo que se devuelve el valor de un campo de Calculated depende del tipo de resultado de la columna calculada.

Un campo Lookup contiene una cadena en el formulario ID;#VALUE, donde ID es el identificador de elemento de lista y VALUE es el valor del campo de búsqueda en la otra lista. Para las búsquedas de varios valores, un campo Lookup contiene una colección.

El valor de un campo de MultiChoice se representa como una cadena que contiene todas las opciones seleccionadas, separadas por ;#.

El campo URL forma única consta de dos cadenas que están separadas por una coma y un espacio. Una cadena contiene la ruta de acceso de dirección URL y la otra contiene la descripción que se usa como texto del hipervínculo.

Puede establecer el valor de un campo de User con un objeto SPUser , como se muestra en el ejemplo siguiente, que se actualiza un elemento en el campo Assigned To de una lista de tareas.

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

Un campo User contiene una cadena en el formulario ID;#User_Display_Name, donde ID es el identificador de miembro (ID.) del usuario asociado. En el siguiente ejemplo se analiza el valor de un campo de Assigned To para devolver un 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);

Al crear un elemento de lista, puede establecer el Author, Editor, Createdy Modified campos del mismo modo que se establece el resto de los campos de un objeto SPListItem . El código se debe ejecutar con derechos de administrador de sitio para funcionar correctamente. Establezca los campos Author y Editor con el identificador numérico del usuario, que puede obtener a través del modelo de objetos mediante el uso de los miembros de SPUser y las clases relacionadas. Los ejemplos siguientes muestran cómo establecer estos campos.

Tenga en cuenta que existen métodos o propiedades para recuperar los metadatos de la versión aprobada actualmente de un elemento de lista. (Esto se da por supuesto que ha habilitado la aprobación de control de versiones y de contenido para el elemento de lista.) Para solucionar este problema, se pueden recuperar los metadatos para la versión aprobada actual con el siguiente

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

Ejemplos

En el ejemplo de código siguiente se usa un indizador para comprobar el valor de un campo determinado en la lista especificada. Si el valor es igual a "None", los indizadores para los otros dos campos se usan para mostrar valores de campos específicos.

En este ejemplo se requieren using directivas (Imports en Microsoft Visual Basic) para los espacios de nombres Microsoft.SharePoint y 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>";
    }
}

En el ejemplo de código anterior se supone la existencia de una página .aspx que contiene un control de etiqueta.

En el ejemplo de código siguiente se agrega un elemento a una lista de anuncios, mediante los indizadores de fecha y hora para asignar valores a 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();
    }
}

Nota

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.

Seguridad para subprocesos

Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.

Vea también

Referencia

Miembros SPListItem

Espacio de nombres Microsoft.SharePoint