Benutzerdefinierte verbundene Felder

Letzte Änderung: Donnerstag, 3. März 2011

Gilt für: SharePoint Foundation 2010

Dieses Thema behandelt die Verwendung der RelatedField-Eigenschaft, um eine Beziehung zwischen zwei benutzerdefinierten Feldern zu definieren und diese beim Rendern eines der Felder in einer Listenansicht zu verwenden.

HinweisHinweis

In diesem Thema wird davon ausgegangen, dass Sie mit dem Thema Gewusst wie: Anpassen des Renderings eines Felds in einer Listenansicht vertraut sind.

Wichtiger HinweisWichtig

Dieses Thema befasst sich nicht mit den Klassen Microsoft.SharePoint.SPRelatedField oder Microsoft.SharePoint.Client.RelatedField. Dort wird der Begriff "verbundenes Feld" in einem anderen Sinn und in einem anderen Zusammenhang verwendet. Weitere Informationen finden Sie unter Nachschlagevorgänge und Listenbeziehungen.

Verbundene Felder

Es kann Szenarien geben, in denen Sie möglicherweise eine Beziehung zwischen zwei benutzerdefinierten Feldern definieren möchten. Ein Beispiel könnte ein Hinweisfeld sein, dessen Text in einigen Listenansichten gerendert wird, das jedoch in bestimmten Listenansichten eines von zwei kleinen GIF-Bildern in Abhängigkeit davon rendern soll, ob der Hinweis Inhalte aufweist. Eine Möglichkeit, dies zu erreichen, besteht darin, ein zweites Feld zu verwenden, das auf dem Typ Link oder Bild basiert. Die zweite Spalte wird als ausgeblendete Spalte definiert; in bestimmten Ansichten wird jedoch das Bild in der Spalte des Hinweisfelds anstelle des Hinweisinhalts gerendert.

Die Renderlogik ist Teil des XSLT-Stylesheets, das Sie für benutzerdefinierte Felder erstellen. Das Beispiel im Thema Gewusst wie: Anpassen des Renderings eines Felds in einer Listenansicht beschreibt einen Fall, in dem das Rendern eines Felds teilweise durch den Wert eines anderen Felds gesteuert wird. In diesem Beispiel handelt es sich bei der Beziehung zwischen den beiden Feldern um eine implizite Beziehung, da die beiden Felder identische Namen aufweisen; der einzige Unterschied ist, dass ein Feld einen Punkt (".") am Ende des Namens hinzufügt. Hierdurch ist es möglich, den folgenden XPath-Ausdruck zu verwenden, um aus einem Verweis auf das aktuelle Feld einen Verweis auf das andere Feld zu machen.

$thisNode/@*[name()=concat(current()/@Name, '.')]"

In bestimmten Situationen gibt es jedoch keine integrierte Beziehung, die Sie nutzen können. In diesen Situationen können Sie die SPField.RelatedField-Eigenschaft des Hauptfelds verwenden, um den internen Namen des verbundenen Felds anzugeben. Anschließend können Sie den folgenden XPath-Ausdruck verwenden, um auf das verbundene Feld zu verweisen.

$thisNode/@*[name()=$fieldDefinition/@RelatedField]

Die $fieldDefinition-Variable muss hierbei folgendermaßen definiert sein.

<xsl:variable name="fieldDefinition" select="$XmlDefinition/ViewFields/FieldRef[@Name=current()/@Name]"/>

Die $XmlDefinition-Variable ist eine integrierte Variable, die als aktueller Knoten der Quellknotenstruktur definiert ist, was in diesem Kontext das View-Element wäre.

Nach dem Definieren der Beziehung zwischen einem Hauptfeld und einem verbundenen Feld können Sie XSLT-Markup verwenden, um festzulegen, wie sich der Wert des verbundenen Felds auf das Rendern des Hauptfelds auswirkt. Sie können auch festlegen, dass der Wert des verbundenen Felds zusätzlich oder sogar anstelle des Hauptfelds angezeigt wird.

Siehe auch

Konzepte

Benutzerdefinierte Feldtypen

Gewusst wie: Erstellen einer benutzerdefinierten Feldklasse