SPContentType.Update - Méthode (Boolean, Boolean)

Met à jour la définition de type de contenu qui est stockée dans la base de données, éventuellement met à jour tous les types de contenu qui héritent de ce type de contenu et lève éventuellement une exception lorsqu'il rencontre un type de contenu enfant qui ne peut pas être modifié.

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

Syntaxe

'Déclaration
Public Sub Update ( _
    updateChildren As Boolean, _
    throwOnSealedOrReadOnly As Boolean _
)
'Utilisation
Dim instance As SPContentType
Dim updateChildren As Boolean
Dim throwOnSealedOrReadOnly As Boolean

instance.Update(updateChildren, throwOnSealedOrReadOnly)
public void Update(
    bool updateChildren,
    bool throwOnSealedOrReadOnly
)

Paramètres

  • updateChildren
    Type : System.Boolean

    true pour pousser les modifications apportées au type de contenu sur les types de contenu qui héritent de ce type de contenu.

  • throwOnSealedOrReadOnly
    Type : System.Boolean

    true pour lever une exception lorsque cette méthode rencontre un type de contenu qui ne peut pas être modifié car il est verrouillé ou en lecture seule ; dans le cas contraire, false.

Exceptions

Exception Condition
SPContentTypeSealedException

La propriété Sealed de ce type de contenu ou d'un enfant de ce type de contenu a la valeur true.

SPContentTypeReadOnlyException

La propriété ReadOnly de ce type de contenu a la valeur true.

- ou -

updateChildren est true et la propriété ReadOnly d'un enfant de ce type de contenu a la valeur true.

Remarques

Lorsque vous apportez des modifications à un type de contenu de site via le modèle objet, votre code est réellement rendre ces modifications à la représentation en mémoire du type de contenu de site. Uniquement lorsque vous appelez la méthode UpdateSharePoint Foundation rendre ces modifications permanentes, en les validant à la définition de type de contenu qui est stockée dans la base de données de site.

Pour plus d'informations, consultez Updating Content Types.

Lorsque vous apportez des modifications à un type de contenu de site, vous pouvez décider de propager ou Pousser vers le bas, les modifications apportées au type de contenu parent à son enfant du site et de liste types de contenu.

Pour plus d'informations, consultez Updating Child Content Types.

Exemples

L'exemple suivant est une application console qui énumère tous les types de contenu dans la collection de sites à la recherche de références à un champ de site nommé « Propriétaire ». Si tel est le cas, l'application tente de supprimer l'objet SPFieldLink à partir du type de contenu de site et de tous les types de contenu enfants. L'application signale des exceptions par des messages d'impression à la console.

Notez que l'application choisit de ne pas lever une exception si la mise à jour rencontre un type de contenu enfant qui est verrouillé ou en lecture seule.

Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
    Sub Main()
        Dim site As SPSite = New SPSite("https://localhost")
        Try
            Dim web As SPWeb = site.OpenWeb()
            Try
                Dim fldName As String = "Owner"
                Dim id As Guid = GetFieldId(fldName, web.Fields)
                ' Try to delete links to the field from site content types.
                Dim found As Boolean = False
                For Each ct As SPContentType In web.ContentTypes
                    Dim fldLnk As SPFieldLink = ct.FieldLinks(id)
                    If fldLnk IsNot Nothing Then
                        found = True
                        Console.WriteLine("Content type {0} links to field {1}.", ct.Name, fldName)
                        ct.FieldLinks.Delete(id)
                        Try
                            ' Do not throw an exception if child is readonly or sealed.
                            ct.Update(true, false) 
                            Console.Write("Field deleted from the site content type and all children ")
                            Console.WriteLine("except those that are sealed or read-only.”)
                        Catch ex As SPException
                            Console.Write("Update failed. ")
                            Console.WriteLine(ex.Message)
                        End Try
                    End If
                Next ct
                If Not found Then
                    Console.WriteLine("No site content type links to field {0}", fldName)
                End If
            Finally
                web.Dispose()
            End Try
            Finally
                site.Dispose()
            End Try
        Console.Write(vbCrLf + "Press ENTER to continue...")
        Console.ReadLine()
    End Sub

    Function GetFieldId(ByVal name As String, ByVal fields As SPFieldCollection) As Guid
        Dim id As Guid = Guid.Empty
        Dim fld As SPField = Nothing
        Try
            fld = fields.GetField(name)
        Catch ex As ArgumentException
            Console.WriteLine("Exception thrown by a call to {0} with argument '{1}'", ex.TargetSite, name)
        End Try
        If fld IsNot Nothing Then
            id = fld.Id
        End If
        Return id 'Might be Guid.Empty
    End Function
End Module
using System;
using Microsoft.SharePoint;

namespace Test
{
    class ConsoleApp
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    string fldName = "Owner";
                    Guid id = GetFieldId(fldName, web.Fields);
                    // Try to delete links to the field from site content types.
                    bool found = false;
                    foreach (SPContentType ct in web.ContentTypes)
                    {
                        SPFieldLink fldLnk = ct.FieldLinks[id];
                        if (fldLnk != null)
                        {
                            found = true;
                            Console.WriteLine("Content type {0} links to field {1}.",
                                              ct.Name, fldName);
                            ct.FieldLinks.Delete(id);
                            try
                            {
                                // Do not throw an exception if child is readonly or sealed.
                                ct.Update(true, false); 
                                Console.Write("Field deleted from the site content type and all children ");
                                Console.WriteLine("except those that are sealed or read-only.");
                            }
                            catch (SPException ex)
                            {
                                Console.Write("Update failed. "); 
                                Console.WriteLine(ex.Message);
                            }
                        }
                    }
                    if (!found)
                        Console.WriteLine("No site content type links to field {0}", fldName);
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }

        static Guid GetFieldId(string name, SPFieldCollection fields)
        {
            Guid id = Guid.Empty;
            SPField fld = null;
            try
            {
                fld = fields.GetField(name);
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine("Exception thrown by a call to {0} with argument '{1}'", ex.TargetSite, name);
            }
            if (null != fld)
                id = fld.Id;
            return id; //Might be Guid.Empty
        }
    }
}

Voir aussi

Référence

SPContentType classe

SPContentType - Membres

Update - Surcharge

Microsoft.SharePoint - Espace de noms