Rendern der Eigenschaften von benutzerdefinierten Feldtypen

Letzte Änderung: Samstag, 3. April 2010

Gilt für: SharePoint Foundation 2010

Viele Merkmale von Feldtypen sind universell. Alle Feldtypen weisen beispielsweise eine Eigenschaft auf, die ihre Sortierung ermöglicht. Diese Eigenschaft kann auf true oder false festgelegt werden. Benutzerdefinierte Feldtypen hingegen verfügen häufig über variable Eigenschaften, die nur in Bezug auf den gewünschten Zweck und den zugrunde liegenden Datentyp des Feldtyps nützlich sind. Angenommen, Sie verfügen über einen Feldtyp für reguläre Ausdrücke, dessen Werte Zeichenfolgen sind, die einem angegebenen regulären Ausdruck entsprechen. Der jeweilige reguläre Ausdruck, für den eine Entsprechung vorliegen muss, variiert von Spalte zu Spalte. Aus diesem Grund muss er von Benutzern auf den Seiten Neue Websitespalte, Websitespalte ändern, Spalte erstellen und Spalte ändern festgelegt werden, wenn sie eine Spalte auf der Grundlage des Feldtyps erstellen.

Rendern von Feldeigenschaften

Sie können das Rendern von Feldtypeigenschaften definieren, indem Sie eine ASCX-Seite erstellen, die als Feld-Editor-Benutzersteuerelement fungiert. Hierdurch ist es Ihnen möglich, benutzerdefinierte Datenverarbeitungslogik in der CodeBehind-Seite des ASCX-Steuerelements zu schreiben, beispielsweise komplexe Berechnungslogik, das Nachschlagen von Werten in Datenquellen oder benutzerdefinierte Datenüberprüfungen.

Sie geben das als Feld-Editor-Steuerelement zu verwendende Steuerelement mit "FieldEditorUserControl" als Wert des Name-Attributs für ein Field-Element (Feldtypen) in der XML-Datei mit der Feldtypdefinition an. Beispiel:

<Field Name="FieldEditorUserControl">
/_controltemplates/LookupFieldEditor.ascx
</Field>

Sie können nur ein Feld-Editor-Steuerelement für eine bestimmte Feldtypklasse angeben. Wenn Sie von einer Feldtypklasse erben, für die bereits ein Feld-Editor-Benutzersteuerelement angegeben ist (beispielsweise der Lookup-Feldtyp oder der User-Feldtyp), und Sie geben ein weiteres Feld-Editor-Steuerelement in der Feldtypdefinition an, erben Sie nicht auch das Feld-Editor-Benutzersteuerelement der übergeordneten Klasse. Wenn das Feld-Editor-Steuerelement des übergeordneten Feldtyps geerbt werden soll, dürfen Sie entweder nicht das <Field Name="FieldEditorUserControl">-Element in die Feldtypdefinition einschließen, oder Sie müssen dasselbe Steuerelement angeben, das auch in der Definition des übergeordneten Feldtyps angegeben ist.

HinweisHinweis

Mit zwei Ausnahmen werden Editor-Steuerelemente nicht zum Rendern der variablen Eigenschaften der Feldtypen im Lieferumfang von SharePoint Foundation auf den Seiten Neue Websitespalte, Websitespalte ändern, Spalte erstellen und Spalte ändern verwendet. (Auch die Vorversionsmethode des Renderns von Feldtypeigenschaften (siehe die Beschreibung weiter unten) wird nicht verwendet.) Stattdessen erfolgt das Rendern durch hartcodiertes Markup in der Seitendatei selbst (beispielsweise FldNew.aspx). (Die Ausnahmen stellen der Lookup-Feldtyp und der User-Feldtyp dar, bei denen jeweils ein Editor-Steuerelement verwendet wird.) Daher kann eine benutzerdefinierte Feldklasse keine Informationen zum Rendern der Eigenschaften des Feldtyps in der vererbenden SharePoint Foundation-Klasse erben (außer u. U. wenn vom Lookup-Feldtyp oder User-Feldtyp geerbt wird). Wenn Sie z. B. einen benutzerdefinierten Feldtyp von der SPFieldText-Klasse ableiten, erbt der neue benutzerdefinierte Feldtyp nicht die Renderinginformationen für das Textfeld (auf den Seiten Neue Websitespalte, Websitespalte ändern, Spalte erstellen und Spalte ändern), wo die Spaltenersteller oder Spaltenbearbeiter die maximale Länge des Felds angeben. Zum Rendern von Feldtypeigenschaften der übergeordneten Klasse müssen Sie eigene Renderinginformationen mithilfe eines Feld-Editor-Benutzersteuerelements angeben.

Neben der Frage, ob eine benutzerdefinierte Feldtypklasse Renderinginformationen von der übergeordneten Klasse erben kann, stellt sich die Frage, ob das Editor-Steuerelement selbst von einem der integrierten Editor-Steuerelemente erben kann. Die Antwort lautet "nein". Die Feld-Editor-Steuerelementklasse kann nicht von der LookupFieldEditor-Steuerelementklasse oder von der UserFieldEditor-Steuerelementklasse erben, die die einzigen beiden Feld-Editor-Steuerelemente im Lieferumfang von SharePoint Foundation darstellen. Auf diese kann vom Code aus nicht zugegriffen werden.

Rendern von Feldeigenschaften mit dem PropertySchema-Element

In früheren Versionen von SharePoint Foundation haben Entwickler nicht immer ASCX-Editor-Steuerelemente zum Rendern von Feldtypeigenschaften verwendet. In diesem Abschnitt wird eine alternative Methode beschrieben. Die Informationen dienen ausschließlich dazu, Sie beim Debuggen eines benutzerdefinierten Feldtyps zu unterstützen, der ursprünglich auf der Grundlage einer früheren Version der SharePoint Foundation-Plattform entwickelt wurde und der die ältere Methode zum Rendern von Feldtypeigenschaften verwendet. Obwohl diese Methode weiterhin funktionsfähig ist und ältere benutzerdefinierte Felder weiterhin richtig gerendert werden, wird empfohlen, diese Methode nicht für neue benutzerdefinierte Feldprojekte zu verwenden. Durch die Verwendung dieser Methode kann die Wahrscheinlichkeit abnehmen, dass der benutzerdefinierte Feldtyp mit zukünftigen Versionen von SharePoint Foundation kompatibel ist.

Wenn Sie die Feldtypdefinition in einer Datei "fldtypes*.xml" erstellen, können Sie jede Feldtypeigenschaft als Field-Element im PropertySchema-Element definieren. Wenn Sie die Feldtypeigenschaften im PropertySchema-Element definieren, werden die betreffenden Eigenschaften von SharePoint Foundation automatisch auf der Grundlage des Schemas gerendert.

Das PropertySchema-Element enthält ein Fields-Element, das wiederum ein Field-Element für jede zu definierende Feldtypeigenschaft enthält. Sie können Standard-Collaborative Application Markup Language (CAML) in den einzelnen Field-Elementen verwenden. Weitere Informationen zu benutzerdefinierten Feldtypen finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Feldtypdefinition.

Bei dieser Vorgehensweise sind Sie auf die Renderingoptionen beschränkt, die beim Verwenden von CAML verfügbar sind. Sie können keine benutzerdefinierte Verarbeitung oder Überprüfung für die Feldtypeigenschaften angeben. Daher empfahl sich dieser Ansatz beim Arbeiten mit einfachen Feldtypeigenschaften, bei denen keine komplexe Verarbeitungs- oder Überprüfungslogik erforderlich war.

HinweisHinweis

Beachten Sie unbedingt, dass es sich hierbei nicht um die Validierung bestimmter Werte handelt, die Endbenutzer dem Feld in einem Listenelement einer konkreten Liste zuweisen. Stattdessen geht es hier um Eigenschaften des Felds (d. h. der Spalte), die auf den Seiten Neue Websitespalte, Websitespalte ändern, Spalte erstellen und Spalte ändern festgelegt werden. Die Werte, die Spaltenersteller oder Spaltenbearbeiter zum Festlegen einer Feldeigenschaft angeben, müssen nur äußerst selten validiert werden.

Siehe auch

Konzepte

Benutzerdefinierte Feldtypen

Gewusst wie: Erstellen einer benutzerdefinierten Feldklasse

Vorgehensweise: Erstellen einer benutzerdefinierten Feldtypdefinition

Editor-Steuerelemente für Feldtypeigenschaften