Allgemeine Knoten-Funktionen
Drei Funktionen sind für alle Knoten Datenansichts häufig:
Knoten-ID
Knoten-Anzeigename
Knoten-untergeordnete Elemente
Knoten-ID
Es gibt zwei Arten der Knoten-ID, je nach Kontext, in dem es verwendet wird. Knoten-ID, die für statische Knoten angegeben sind, werden die Knoten, die keine zugrunde liegenden Objekte wurde, enthält einen anderen Wert als die Knoten-ID, die für nicht statische Knoten Knoten angegeben ist, die zugrunde liegenden Objekte haben.
Beachten Sie, dass der Verweis auf die Knoten-ID für den nodeId XML-Attribut entspricht, das in DataViewSupport-Schema definiert ist.
Knoten-ID für statische Knoten
Die Knoten-ID eines statischen Knoten ist der Teil des vollständigen Namens eines Knotens, der nicht statischen den Pfad darstellt, der auf diesen nicht statischen Knoten führt. Beispielsweise stellt Folgendes den vollständigen Namen (den vollständigen Pfad) von“ Table „erstellt, die der Knoten nicht statisch ist, und enthält den statischen Knoten „Tabellen“ dar: /Tables/UserTables/Table [„pubs.dbo.authors]“.
In diesem Fall ist die Knoten-ID „/Tables/UserTables/“ da dies der Pfad handelt, der das betreffende Knoten an.
Eine Beschreibung des Formats des vollständigen Namens des Knotens finden Sie unter FullName.
Knoten-ID für nicht statische Knoten
Allerdings stellt die Knoten-ID des Knotens eines nicht statischen Knoten dar, der bei der Auswahl von Eigenschaften darunter liegenden Objekten enthält. Dieser Knoten ist in der Regel ein übergeordneter Knoten der auszuwählenden Objekte. Insbesondere sucht das Objekt nach Ablauf der Knoten-ID des nächsten übergeordneten Knotens in der Hierarchie der Ansicht, die Eigenschaften für das Auswählen von Objekten verfügt, d.h., wenn das erste übergeordnete Element nicht über diese Eigenschaften bereitstellt, die Knoten-ID des nächsten übergeordneten Elements in der Hierarchie nach oben überprüft wird, bis ein qualifiziertes übergeordnetes Element vorhanden ist.
Angenommen, ein nicht statischer Knoten Tabellen in der Hierarchie der Ansicht vorhanden sind, die „Autoren“ genannt wird, dass zwei Spalten enthält, die „au_id“ und „au_name“ aufgerufen werden. In dieser Tabelle und anderen Tabellen sind statische unter dem Knoten „der Tabelle“. Um diese Spalten auszuwählen, muss der Client die Knoten-ID des übergeordneten Elements der Spaltenauswahl identifizieren, die in diesem Beispiel die Knoten-ID des Knotens Tabellen-Auswahl ist. Das folgende XML zeigt dieses Beispiel.
<StaticNode nodeId="Tables">
<Children>
<Selection type="Table">
<SelectionNode nodeId="Table">
<Children>
<Selection type="Column" restrictions="{Table.Name}">
...
</Selection>
</Children>
</SelectionNode>
</Selection>
</Children>
</StaticNode>
Knoten-Anzeigename
Hierarchieknoten können einen Anzeigenamen verfügen, der mit einem Symbol in Visual Studio Server-Explorerangezeigt wird. Nur statische Knoten, einschließlich statischen Knoten Verbindungen erforderlich, da er den Anzeigenamen für die anderen Knotentypen abgeleitet werden kann.
Um den Anzeigenamen eines Knotens zu aktivieren, verwenden Sie die DisplayName-Element. Auf diese Weise können Sie den Namen des Knotens anzugeben, wie in der IDE angezeigt, sowie anzugeben, wie Sie den Anzeigenamen formatiert. (Für einen Knoten Verbindungen, wird das entsprechende Element das InitialDisplayName-Element bezeichnet, da der angezeigte Name für einen Knoten Verbindungen vom Benutzer geändert werden kann.) Um den Anzeigenamen zu formatieren, verwenden Sie entweder einfache Zeichenfolgeninhalt oder verweisen Sie auf eine Ressource, die von den Ressourcenabschnitt des XML-Dokuments verfügbar gemacht wird.
Sie können einen Anzeigenamen zuweisen, indem Sie bedingt das optionale when-Attribut, das Sie einen Ausdruck angeben können, der ausgewertet wird, um zu entscheiden, ob mithilfe des angegebenen Formats mit einem bestimmten Satz von Bedingungen richtig ist.
Bedingte Anwendung des Anzeigenamens und des Stils tritt möglicherweise aus mehreren Gründen auf. Angenommen, Sie möchten den Namen des Eigentümers neben dem Tabellennamen nur unter der Bedingung an, dass der Name des Eigentümers zum aktuellen Benutzernamen unterscheidet.
Der folgende Beispielcode zeigt Vertreter XML für die Behandlung der bedingte Verwendung des Anzeigenamens, wie im Szenario oben beschrieben.
<SelectionNode>
<DisplayName when="NOT ({Schema} = {Database.UserName})">
{Name} ({Schema})
</DisplayName>
</SelectionNode>
Allerdings ist der literale Ausdruck für den bedingten Ausdruck dieser: Auswahl für diesen Knoten sollte der Anzeigenamen der Datenbanktabellen sein Name des vom Besitzer der Tabelle in Klammern gefolgt wird, wenn das Schema für Tabellen nicht gleich dem aktuellen Benutzer in der Datenbank vorhanden ist.
In diesem Beispiel gibt es keinen Standard Anzeigenamen, sondern ein Namensformat, das durch einen bedingten Ausdruck angegeben ist. Dies wird für Objekt-Verbindungs Knoten Knoten und Auswahl zulässig, da diese Knotentypen ein Standardformat, das vom zugrunde liegende Objekt abgeleitet sein. Eine statische Verbindung dann den Knoten erzwingt das Schema erforderlich, die mindestens ein DisplayName-Element angegeben wird.
Knoten-untergeordnete Elemente
Knoten muss das Children-Element verwenden, um ihre untergeordneten Knoten anzugeben.
Es gibt drei Typen von untergeordneten Knoten bereit:
Statisch. Jeder Knoten kann einen statischen Knoten für ein untergeordnetes Element, einschließlich eines anderen statischen Knoten verfügen. Zum Beispiel könnte eine erweiterte „Basistabellen“ Auflistung „Systemtabellen“ und „Anwendertabellen“ angezeigt.
Auswahl. Dieser untergeordnete Knotentyp erstreckt sich auf mehrere untergeordnete Knoten anhand einer Auswahl von Objekten, die vom Server aufgelistet werden. Um dies zu verdeutlichen, nehmen Sie in der Datenansicht angezeigt, die eine Liste der Tabellen aus der Datenquelle anzeigen möchten. Sie können das folgende XML schreiben, die dies tun:
<StaticNode> <DisplayName>Tables</DisplayName> <Children> <Selection type="Table"/> </Children> </StaticNode>
Im oben gezeigten XML-Code führen würde die folgende Hierarchie angezeigt werden:
- Tables - <Table 1> - <Table 2> - ...