SPFieldLinkCollection.Delete - Méthode (Guid)
Supprime l'objet SPFieldLink avec l'ID spécifié de la collection.
Espace de noms : Microsoft.SharePoint
Assembly : Microsoft.SharePoint (dans Microsoft.SharePoint.dll)
Syntaxe
'Déclaration
Public Sub Delete ( _
id As Guid _
)
'Utilisation
Dim instance As SPFieldLinkCollection
Dim id As Guid
instance.Delete(id)
public void Delete(
Guid id
)
Paramètres
id
Type : System.GuidLa valeur de la propriété Id de l'objet SPFieldLink à supprimer.
Remarques
Si un objet avec l'ID spécifié est introuvable, la méthode n'effectue aucune action.
Notes
L'objet n'est pas réellement supprimé que lorsque vous appelez la méthode SPContentType.Update . Lorsque vous apportez des modifications à un type de contenu via le modèle objet, votre code effectue ces modifications à la représentation en mémoire du type de contenu. Uniquement une fois que vous appelez la méthode UpdateSharePoint Foundation rendre ces modifications permanentes, enregistrant à la définition de type de contenu qui est stockée dans la base de données.
Exemples
L'exemple suivant montre une application de 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.
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
ct.Update(True, True) ' Throws an exception if this or child is readonly or sealed.
Console.WriteLine("Field deleted from content type and all children.")
Catch ex As SPException
Console.Write("Field was not deleted from all instances of this content type. ")
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
{
ct.Update(true, true); // Throws an exception if this or child is readonly or sealed.
Console.WriteLine("Field deleted from content type and all children.");
}
catch (SPException ex)
{
Console.Write("Field was not deleted from all instances of this content type. ");
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.
}
}
}
Voir aussi
Référence
SPFieldLinkCollection - Membres
Microsoft.SharePoint - Espace de noms