Freigeben über


SPContentType.Update-Methode (Boolean, Boolean)

Aktualisiert die Inhaltstypdefinition, die in der Datenbank gespeichert ist, aktualisiert optional alle Inhaltstypen, die von diesem Inhaltstyp erben und optional eine Ausnahme ausgelöst wird, wenn einen untergeordneter Inhaltstyp auftritt, der nicht geändert werden kann.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
Public Sub Update ( _
    updateChildren As Boolean, _
    throwOnSealedOrReadOnly As Boolean _
)
'Usage
Dim instance As SPContentType
Dim updateChildren As Boolean
Dim throwOnSealedOrReadOnly As Boolean

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

Parameter

  • updateChildren
    Typ: System.Boolean

    true , drücken Sie die Änderungen an den Inhaltstyp nach unten zu Inhaltstypen, die von diesem Inhaltstyp erben.

  • throwOnSealedOrReadOnly
    Typ: System.Boolean

    true eine Ausnahme ausgelöst, wenn diese Methode einen Inhaltstyp, der nicht geändert werden kann findet, da es versiegelt oder schreibgeschützt ist; andernfalls false.

Ausnahmen

Ausnahme Bedingung
SPContentTypeSealedException

Die Sealed -Eigenschaft dieses Inhaltstyps oder ein untergeordnetes Element des Inhaltstyps hat den Wert true.

SPContentTypeReadOnlyException

Die ReadOnly -Eigenschaft von diesem Inhaltstyp hat den Wert true.

-ODER-

updateChildrentrue ist und die ReadOnly -Eigenschaft des ein untergeordnetes Element des Inhaltstyps hat den Wert true.

Hinweise

Wie Sie Änderungen an einem Websiteinhaltstyp über das Objektmodell vornehmen, macht Code diese Änderungen tatsächlich in die speicherinterne Darstellung des Websiteinhaltstyps. Nur bei einem Aufruf die Update -Methode SharePoint Foundation diese Änderungen vornehmen dauerhafter, durch deren Aufnahme wieder in der Inhaltstypdefinition, die in der Standortdatenbank gespeichert ist.

Weitere Informationen finden Sie unter Updating Content Types.

Wenn Sie Änderungen an einem Websiteinhaltstyp vornehmen, Sie auswählen können, weitergegeben oder weitergeben, Änderungen an den übergeordneten Inhaltstyp seine untergeordneten, und führen Sie Inhaltstypen.

Weitere Informationen finden Sie unter Updating Child Content Types.

Beispiele

Das folgende Beispiel ist eine Konsolenanwendung, die Listet alle Inhaltstypen in der Websitesammlung nach Verweisen auf ein Websitefeld mit dem Namen "Besitzer". Wenn eine gefunden wird, versucht die Anwendung, das SPFieldLink -Objekt aus dem Websiteinhaltstyp und alle untergeordneten Inhaltstypen zu löschen. Die Anwendung meldet Ausnahmen durch Drucken Nachrichten in der Konsole angezeigt.

Beachten Sie, dass die Anwendung keine Ausnahme ausgelöst möchte, wenn das Update untergeordneten Inhaltstyp gefunden wird, der versiegelte oder schreibgeschützt ist.

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

Siehe auch

Referenz

SPContentType Klasse

SPContentType-Member

Update-Überladung

Microsoft.SharePoint-Namespace