SPListItem - Classe

Représente un élément ou une ligne dans une liste.

Hiérarchie d’héritage

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

Espace de noms :  Microsoft.SharePoint
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Public Class SPListItem _
    Inherits SPItem
'Utilisation
Dim instance As SPListItem
public class SPListItem : SPItem

Remarques

Vous pouvez utiliser un indexeur pour renvoyer un seul élément d'une collection d'éléments de liste. Par exemple, si la collection est assignée à une variable nommée collListItems, utilisez collListItems[index] dans Microsoft Visual C# ou collListItems(index) dans Microsoft Visual Basic, où index est le numéro d'index de l'élément dans la collection ou le nom interne ou affiche le nom d'un champ de liste. Pour un indexeur basé sur un nom, Microsoft SharePoint Foundation recherche d'abord le champ par un nom interne, puis par nom complet.

Important

Pour améliorer les performances et d'optimiser le nombre de requêtes de SQL Server que SharePoint Foundation doit exécuter, utilisez GetItems ou une autre méthode de GetItem* de la classe SPList pour récupérer des éléments en fonction de la valeur de leurs champs. La méthode GetItems vous permet de spécifier des critères de recherche en transmettant une requête de langue CAML (Collaborative Application Markup Language) par le biais de la classe SPQuery ou SPView . En outre, les performances de la liste peut être compromise si une liste contient un inutilement grand nombre de champs. Utilisez la méthode GetItemByIdSelectedFields(Int32, []) pour limiter les champs qui sont extraits par un élément.

Pour affecter des valeurs à un champ dans un élément de liste à l'aide d'un indexeur, les valeurs doivent figurer dans un format qui est approprié pour chaque type de champ intégrés. Le tableau suivant indique la façon dont les types de données qui sont utilisés dans les types de champs SharePoint Foundation sont mappés aux types de Microsoft .NET Framework.

Nom

Format

Attachments

System.Boolean

Boolean

System.Boolean

Calculated

S/O

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

Contrairement à tous les autres membres du modèle objet, l'indexeur pour un champ DateTime renvoie les valeurs dans l'heure locale sur le site. Dans une requête, définissez la propriété DatesInUtc de l'objet SPQuery à true pour l'indexeur renvoyer des valeurs en temps universel coordonné (UTC). Si les valeurs sont retournés dans l'heure locale et que vous souhaitez les convertir au format UTC, utilisez la méthode LocalTimeToUTC , comme suit :

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.

Pour modifier un événement qui est lié à un espace de travail de réunion à l'aide de la classe SPListItem site ne mettra pas à jour le site d'espace de travail de réunion associé et n'est pas pris en charge.

Le type renvoyé de la valeur d'un champ Calculated varie selon le type de sortie de la colonne calculée.

Un champ Lookup contient une chaîne dans le formulaire ID;#VALUE, où ID est l'ID d'élément de liste et VALUE est la valeur du champ liste de choix dans la liste des autre. Au cours des recherches à valeurs multiples, un champ Lookup constituée une collection.

La valeur d'un champ MultiChoice est représentée sous forme de chaîne qui contient toutes les options sélectionnées séparées par ;#.

Le champ URL identifie de façon unique comprend deux chaînes qui sont séparés par une virgule et un espace. Une chaîne contient le chemin d'accès de l'URL et l'autre la description qui est utilisée en tant que texte du lien hypertexte.

Vous pouvez définir la valeur d'un champ User avec un objet SPUser , comme illustré dans l'exemple suivant, qui met à jour un élément dans le champ Assigned To d'une liste de tâches.

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 champ User contient une chaîne dans le formulaire ID;#User_Display_Name, où ID est l'identificateur de membre (ID) de l'utilisateur associé. L'exemple suivant analyse la valeur d'un champ Assigned To pour renvoyer un objet 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);

Lorsque vous créez un élément de liste, vous pouvez définir les champs de Modified , Editor, de Createdet Authorla même manière que vous avez défini les autres champs d'un objet SPListItem . Le code doit s'exécuter avec les droits d'administrateur de site afin de fonctionner correctement. Définissez les champs Author et Editor à l'aide de l'ID numérique de l'utilisateur, vous pouvez obtenir via le modèle objet à l'aide de membres du SPUser et des classes associées. Les exemples suivants montrent comment définir ces champs.

Notez qu'il n'y a aucune méthodes ou des propriétés pour la récupération des métadonnées pour la version actuellement approuvée d'un élément de liste. (Cela suppose que vous avez activé le contrôle de version et le contenu approbation pour l'élément de liste). Pour contourner ce problème, vous pouvez récupérer des métadonnées pour la version approuvée active à l'aide de la commande suivante

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

Exemples

L'exemple de code suivant utilise un indexeur pour vérifier la valeur d'un champ particulier dans la liste spécifiée. Si la valeur est différente de « None », les indexeurs pour les deux autres champs sont utilisés pour afficher les valeurs des champs spécifiques.

Cet exemple nécessite des directives using (Imports dans Microsoft Visual Basic) pour les espaces de noms Microsoft.SharePoint et 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>";
    }
}

L'exemple de code précédent suppose l'existence d'une page .aspx qui contienne un contrôle label.

L'exemple de code suivant ajoute un élément à une liste d'annonces, à l'aide d'indexeurs date et heure pour affecter des valeurs aux champs différents.

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

Notes

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.

Cohérence de thread

Tous les membres statique (Partagé dans Visual Basic)s publics de ce type sont thread-safe. Cela n’est pas garanti pour les membres d’instance.

Voir aussi

Référence

SPListItem - Membres

Microsoft.SharePoint - Espace de noms