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.
Hinweis |
---|
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 |
---|---|
Stellt einen Boolean-Feldtyp dar. |
|
Stellt einen Auswahlfeldtyp dar. |
|
Stellt einen Währungsfeldtyp dar. |
|
Stellt einen Datum-/Uhrzeit-Feldtyp dar. |
|
Stellt ein Nachschlagefeld dar. Der Feldwert für ein SPFieldLookup-Objekt ist in einem SPFieldLookupValue-Objekt enthalten. |
|
Stellt einen Mehrfachauswahl-Feldtyp dar. Der Feldwert für ein SPFieldMultiChoice-Objekt ist in einem SPFieldMultiChoiceValue-Objekt enthalten. |
|
Stellt einen mehrspaltigen Feldtyp dar. Der Feldwert für ein SPFieldMultiColumn-Objekt ist in einem SPFieldMultiColumnValue-Objekt enthalten. |
|
Stellt einen mehrzeiligen Textfeldtyp dar. |
|
Stellt einen Zahlenfeldtyp dar. |
|
Stellt einen Bewertungsfeldtyp dar. Der Feldwert für ein SPFieldRatingScale-Objekt ist in einem SPFieldRatingScaleValue-Objekt enthalten. |
|
Stellt einen einzeiligen Textfeldtyp dar. |
|
Stellt einen URL-Feldtyp dar. Der Feldwert für ein SPFieldUrl-Objekt ist in einem SPFieldUrlValue-Objekt enthalten. |
|
Stellt einen SharePoint Foundation-Benutzer dar. |
Hinweis |
---|
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.
Hinweis |
---|
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 |
---|---|
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:
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. |
|
Gibt ein Steuerelement zurück, mit dem das Feld in den Formularen Anzeigen, Bearbeiten und Neu in mobilen Anwendungen gerendert werden kann. |
|
Gibt den zu rendernden Feldwert im Bearbeitungsmodus zurück. Diese Methode wird für die Formulare Bearbeiten und Neu verwendet. |
|
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:
Weitere Informationen und ein Beispiel für eine überschriebene GetValidatedString-Methode finden Sie unter Überprüfung von benutzerdefinierten Felddaten. |
|
Überschreiben Sie diesen Member, um benutzerdefinierte Feldtyplogik anzugeben, nachdem ein Feld einer Liste hinzugefügt wurde. |
|
Überschreiben Sie diesen Member, um benutzerdefinierte Feldtyplogik anzugeben, nachdem ein Feld aktualisiert wurde. |
|
Ü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 |
---|---|
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. |
|
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. |
|
Gibt den Feldwerttyp zurück. |
|
Gibt den Feldwert als Objekt zurück. |
|
Gibt den Felddatenwert als Zeichenfolge zurück. |
|
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. |
|
Siehe die Anmerkung im Abschnitt "Angeben des Verhaltens eines benutzerdefinierten Felds". |
|
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
Überprüfung von benutzerdefinierten Felddaten
Vorgehensweise: Erstellen einer benutzerdefinierten Feldwertklasse