(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.Booleantrue 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.Booleantrue 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
}
}
}