Freigeben über


Gewusst wie: Erstellen einer benutzerdefinierten Feldklasse

Letzte Änderung: Mittwoch, 15. September 2010

Gilt für: SharePoint Foundation 2010

Zum Erstellen einer benutzerdefinierten Feldtypklasse müssen Sie eine Klasse von der SPField-Klasse oder einer der in der nachstehenden Tabelle aufgeführten Klassen ableiten, die alle von der SPField-Klasse abgeleitet sind.

HinweisHinweis

Daneben gibt es noch andere Feldtypklassen (Klassen, deren Namen dem Muster SPField* entsprechen). Diese werden jedoch von Microsoft SharePoint Foundation auf besondere Weise verarbeitet, und die Ableitung neuer Klassen aus diesen wird nicht unterstützt.

Es wird empfohlen, dass Sie die folgende Namenskonvention beim Erstellen von benutzerdefinierten Feldklassen verwenden, die direkt oder indirekt von der SPField-Klasse abgeleitet sind:

FeldtypnameField

Beispiele für ordnungsgemäß benannte Klassen sind TargetDateField und RegularExpressionField. (Die von SPField abgeleiteten Klassen, die im Lieferumfang von SharePoint Foundation enthalten sind, wurden vor der Definition dieser Namenskonvention erstellt und entsprechen dem Muster SPFieldFeldtypname, wie z. B. SPFieldDateTime.)

Benutzerdefinierte Feldklassen können von den folgenden Membern der SPField-Klasse abgeleitet werden

Benutzerdefinierte Feldtypklassen, die nicht direkt von der SPField-Klasse erben, müssen von einer der folgenden Klassen abgeleitet werden.

Klasse

Beschreibung

SPFieldBoolean

Stellt einen Boolean-Feldtyp dar.

SPFieldChoice

Stellt einen Auswahlfeldtyp dar.

SPFieldCurrency

Stellt einen Währungsfeldtyp dar.

SPFieldDateTime

Stellt einen Datum-/Uhrzeit-Feldtyp dar.

SPFieldLookup

Stellt ein Nachschlagefeld dar. Der Feldwert für ein SPFieldLookup-Objekt ist in einem SPFieldLookupValue-Objekt enthalten.

SPFieldMultiChoice

Stellt einen Mehrfachauswahl-Feldtyp dar. Der Feldwert für ein SPFieldMultiChoice-Objekt ist in einem SPFieldMultiChoiceValue-Objekt enthalten.

SPFieldMultiColumn

Stellt einen mehrspaltigen Feldtyp dar. Der Feldwert für ein SPFieldMultiColumn-Objekt ist in einem SPFieldMultiColumnValue-Objekt enthalten.

SPFieldMultiLineText

Stellt einen mehrzeiligen Textfeldtyp dar.

SPFieldNumber

Stellt einen Zahlenfeldtyp dar.

SPFieldRatingScale

Stellt einen Bewertungsfeldtyp dar. Der Feldwert für ein SPFieldRatingScale-Objekt ist in einem SPFieldRatingScaleValue-Objekt enthalten.

SPFieldText

Stellt einen einzeiligen Textfeldtyp dar.

SPFieldUrl

Stellt einen URL-Feldtyp dar. Der Feldwert für ein SPFieldUrl-Objekt ist in einem SPFieldUrlValue-Objekt enthalten.

SPFieldUser

Stellt einen SharePoint Foundation-Benutzer dar.

HinweisHinweis

Weitere Informationen zum Erstellen benutzerdefinierter Feldwertklassen finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Feldwertklasse.

Angeben des Verhaltens eines benutzerdefinierten Felds

Nach der Auswahl der Feldklasse, von der der benutzerdefinierte Feldtyp abgeleitet werden soll, können Sie die Member dieser Klasse auswählen, die Sie überschreiben möchten. Da die meisten charakteristischen Eigenschaften und Verhaltensweisen eines Feldtyps in seiner Klasse enthalten sind, haben Sie die Wahl zwischen unterschiedlichen Überschreibungssemantiken, indem Sie einfach die von SPField abgeleitete Klasse auswählen, die durch die neue Implementierung überschrieben werden soll.

Beispielsweise enthält die SPField-Klasse die folgenden Member, deren Implementierung ggf. beim Entwickeln benutzerdefinierter Feldtypen überschrieben werden kann.

HinweisHinweis

Für die meisten in diesem Abschnitt aufgeführten Member erfüllt die Standardimplementierung der SPField-Klasse keine nützliche Funktion. Beispielsweise gibt GetFieldValue einfach die übergebenen Werte zurück, und GetValidatedString ruft lediglich die ToString-Methode der Wertklasse auf (die keinerlei Überprüfungslogik enthält). Wenn die benutzerdefinierte Feldtypklasse direkt von SPField abgeleitet ist, müssen Sie daher Überschreibungen für alle Member bereitstellen, die Sie für den vorgesehenen Zweck benötigen.

Member der SPField-Klasse, die häufig überschrieben werden müssen

SPField-Klassenmember

Beschreibung

FieldRenderingControl

Gibt ein Steuerelement zurück, das zum Rendern des Felds in den Formularen Anzeigen, Bearbeiten und Neu sowie auf allen Seiten mit Feldsteuerelementen verwendet werden kann. Ein Objekt, von dem ein Renderingsteuerelement instanziiert wird, enthält in der Field-Eigenschaft einen Verweis zurück auf das gerenderte Feldobjekt. Wie aus diesen reziproken Verweisen hervorgeht, sind die beiden Objekte Partner. Mit dem von SPField abgeleiteten Objekt wird die Interaktion mit der Inhaltsdatenbank behandelt, während mit dem von BaseFieldControl abgeleiteten Renderingsteuerelement die Interaktion mit Benutzern und das Rendering des Felds auf der Benutzeroberfläche behandelt wird. Beachten Sie jedoch, dass ein benutzerdefiniertes Feld nicht mit einem Renderingsteuerelement gerendert werden muss: es kann auch mit einem in einer Felddefinition definierten RenderPattern gerendert werden. In diesem Fall kann die FieldRenderingControl-Eigenschaft null sein. Meist wird ein Feld im Modus Neu oder im Bearbeitungsmodus mit einem Renderingsteuerelement und im Anzeigemodus mit einem Rendermuster gerendert.

Wenn Sie ein Renderingsteuerelement verwenden, muss in der benutzerdefinierten Feldklasse der get-Accessor der FieldRenderingControl-Eigenschaft mit dem folgenden Standardcodemuster überschrieben werden:

public override BaseFieldControl FieldRenderingControl
{
    [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]
    get 
    {
        BaseFieldControl fieldControl = new field_type_nameFieldControl();
        fieldControl.FieldName = this.InternalName;
        return fieldControl;
    }
}
Public Overrides ReadOnly Property FieldRenderingControl() As BaseFieldControl
    <SharePointPermission(SecurityAction.LinkDemand, ObjectModel := True)> _
    Get
        Dim fieldControl As BaseFieldControl = New field_type_nameFieldControl()
        fieldControl.FieldName = Me.InternalName
        Return fieldControl
    End Get
End Property

Durch das Berechtigungsattribut wird sichergestellt, dass die Eigenschaft nur von Code mit der Berechtigung zur Verwendung des SharePoint Foundation-Objektmodells gelesen werden kann. In der Zeile, in der der interne Name des Feldobjekts der FieldName-Eigenschaft zugewiesen wird, wird auch die Field-Eigenschaft auf das Feldobjekt festgelegt. Dadurch wird sichergestellt, dass FeldtypnameFieldControl das gerenderte Objekt bekannt ist.

FieldRenderingMobileControl

Gibt ein Steuerelement zurück, mit dem das Feld in den Formularen Anzeigen, Bearbeiten und Neu in mobilen Anwendungen gerendert werden kann.

GetFieldValueForEdit

Gibt den zu rendernden Feldwert im Bearbeitungsmodus zurück. Diese Methode wird für die Formulare Bearbeiten und Neu verwendet.

GetValidatedString

Gibt bei Überschreibung in einer abgeleiteten Klasse den überprüften Feldwert zurück. Überschreiben Sie diese Methode mit einer benutzerdefinierten Überprüfungs- und Datenserialisierungslogik. (Die Basismethode bietet wie viele davon abgeleitete SharePoint Foundation-Klassen keine Überprüfungslogik.) Diese Methode kann wiederum die ToString-Methode des Feldwertobjekts verwenden, um das Feldwertobjekt in eine Zeichenfolge zu konvertieren. Eine typische Überschreibung sollte Folgendes leisten:

  • Auslösen einer SPFieldValidationException, wenn der Benutzer dem Wert einen ungültigen Wert zugewiesen hat oder wenn der Wert eines Pflichtfelds null ist. Diese Ausnahme wird von SharePoint Foundation abgefangen, wenn der Benutzer versucht, einen ungültigen Wert zu speichern. Beispielsweise bleibt das Formular Neu geöffnet, und in der Message-Eigenschaft der Ausnahme wird eine Fehlermeldung zu dem ungültigen Feld ausgegeben.

  • Aufrufen der GetValidatedString-Basismethode, wenn und nur wenn der Wert die benutzerdefinierte Überprüfung besteht.

Weitere Informationen und ein Beispiel für eine überschriebene GetValidatedString-Methode finden Sie unter Überprüfung von benutzerdefinierten Felddaten.

OnAdded

Überschreiben Sie diesen Member, um benutzerdefinierte Feldtyplogik anzugeben, nachdem ein Feld einer Liste hinzugefügt wurde.

OnUpdated

Überschreiben Sie diesen Member, um benutzerdefinierte Feldtyplogik anzugeben, nachdem ein Feld aktualisiert wurde.

OnDeleting

Überschreiben Sie diesen Member, um benutzerdefinierte Feldtyplogik anzugeben, bevor ein Feld aus einer Liste gelöscht wird.

Member der SPField-Klasse, die häufig überschrieben werden, wenn ein komplexer benutzerdefinierter Datentyp verwendet wird

Darüber hinaus gibt es verschiedene Member der SPField-Klasse, die Sie wahrscheinlich überschreiben möchten, wenn der Feldtyp einen komplexen benutzerdefinierten Datentyp erfordert, der sich von dem des übergeordneten Feldtyps unterscheidet. Sie definieren solche benutzerdefinierten Datentypen mit benutzerdefinierten Feldwertklassen. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Feldwertklasse. (Möglicherweise müssen Sie diese Member auch in anderen Situationen überschreiben, auch wenn Sie keine benutzerdefinierten Datentypen erstellen.)

SPField-Klassenmember

Beschreibung

DefaultValue

Gibt einen Standardwert als Zeichenfolge zurück, der für das Feld verwendet werden kann, wenn für ein bestimmtes Listenelement kein Wert im Feld vorhanden ist.

DefaultValueTyped

Gibt einen Standardwert zurück, der für das Feld verwendet werden kann, wenn für ein bestimmtes Listenelement kein Wert im Feld vorhanden ist.

FieldValueType

Gibt den Feldwerttyp zurück.

GetFieldValue

Gibt den Feldwert als Objekt zurück.

GetFieldValueAsText

Gibt den Felddatenwert als Zeichenfolge zurück.

GetFieldValueAsHtml

Gibt den Felddatenwert als Zeichenfolge zurück, die als HTML formatiert ist. Mit diesem HTML-formatierten Feldwert wird der Feldwert häufig direkt auf einer Seite gerendert. Er wird beispielsweise auf der Versionsverlaufsseite eines Listenelements verwendet. Dieser HTML-formatierte Feldwert wird jedoch nicht im Formular Anzeigen verwendet. Das Rendern von Feldern für das Formular Anzeigen erfolgt normalerweise aus dem DisplayPattern-Element von Collaborative Application Markup Language (CAML) in der Datei fldtype*.xml des Feldtyps.

GetValidatedString

Siehe die Anmerkung im Abschnitt "Angeben des Verhaltens eines benutzerdefinierten Felds".

PreviewValueTyped

Gibt einen Vorschauwert von Felddaten für eine Entwurfszeitansicht des Feldsteuerelements im Anzeige- und Bearbeitungsmodus zurück.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Feldtyps

Konzepte

Vorgehensweise: Erstellen eines benutzerdefinierten Feldtyps

Benutzerdefinierte Feldtypen

Überprüfung von benutzerdefinierten Felddaten

Vorgehensweise: Erstellen einer benutzerdefinierten Feldwertklasse