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.Booleantrue , drücken Sie die Änderungen an den Inhaltstyp nach unten zu Inhaltstypen, die von diesem Inhaltstyp erben.
throwOnSealedOrReadOnly
Typ: System.Booleantrue 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
}
}
}