Compartir a través de


(Boolean, Boolean) del método SPContentType.Update

Actualiza la definición de tipo de contenido que se almacena en la base de datos, de forma opcional actualiza todos los tipos de contenido que heredan de este tipo de contenido y, opcionalmente, inicia una excepción cuando detecta un tipo de contenido secundario que no se pueden modificar.

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

Sintaxis

'Declaración
Public Sub Update ( _
    updateChildren As Boolean, _
    throwOnSealedOrReadOnly As Boolean _
)
'Uso
Dim instance As SPContentType
Dim updateChildren As Boolean
Dim throwOnSealedOrReadOnly As Boolean

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

Parámetros

  • updateChildren
    Tipo: System.Boolean

    true para enviar los cambios realizados en el tipo de contenido a los tipos de contenido que heredan de este tipo de contenido.

  • throwOnSealedOrReadOnly
    Tipo: System.Boolean

    true se produce una excepción cuando este método encuentra un tipo de contenido que no se puede modificar porque está sellado o de sólo lectura; en caso contrario, false.

Excepciones

Excepción Condición
SPContentTypeSealedException

La propiedad Sealed de este tipo de contenido o de un elemento secundario de este tipo de contenido tiene un valor de true.

SPContentTypeReadOnlyException

La propiedad ReadOnly de este tipo de contenido tiene un valor de true.

o

updateChildren es true y la propiedad ReadOnly de un elemento secundario de este tipo de contenido tiene un valor de true.

Comentarios

Cuando se realizan cambios a un tipo de contenido de sitio a través del modelo de objetos, el código realmente es realizar esos cambios a la representación en memoria del tipo de contenido de sitio. Sólo cuando se llama al método UpdateSharePoint Foundation que esos cambios sea permanente, mediante la confirmación de ellos con la definición de tipo de contenido que se almacena en la base de datos del sitio.

Para obtener más información, vea Updating Content Types.

Al realizar cambios a un tipo de contenido de sitio, puede elegir propagar o Empujar hacia abajo, los cambios realizados en el tipo de contenido primario a su elemento secundario de sitio y lista de tipos de contenido.

Para obtener más información, vea Updating Child Content Types.

Ejemplos

En el siguiente ejemplo es una aplicación de consola que enumera todos tipos de contenido en la colección de sitios, busca las referencias a un campo de sitio denominado "Propietario". Si se encuentra uno, la aplicación intenta eliminar el objeto de SPFieldLink desde el tipo de contenido de sitio y todos los tipos de contenido secundarios. La aplicación informa excepciones mediante imprimir mensajes en la consola.

Tenga en cuenta que la aplicación decide no produce una excepción si la actualización encuentra un tipo de contenido secundario que está sellado o de solo lectura.

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

Vea también

Referencia

clase SPContentType

Miembros SPContentType

Sobrecarga Update

Espacio de nombres Microsoft.SharePoint