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