Fonctionnalités communes de nœud
Trois fonctionnalités sont communes à tous les nœuds de vue de données :
ID de nœud
Nom complet de nœud
Enfants de nœud
ID de nœud
Il existe deux types d'identificateurs de nœud, selon le contexte dans lequel il est utilisé. Les identificateurs de nœud qui sont spécifiés pour les nœuds statiques, qui sont des nœuds qui n'ont pas les objets sous-jacents, contiennent une valeur différente des identificateurs de nœud spécifiés pour les nœud-nœuds non statiques qui ont les objets sous-jacents.
Notez que la référence à l'ID de nœud correspond à l'attribut XML de nodeId définie dans le schéma de DataViewSupport.
ID de nœud pour les nœuds statiques
L'ID de nœud d'un nœud statique est la partie du nom complet non static d'un nœud qui représente le chemin d'accès qui aboutit à ce nœud non statique. Par exemple, le code suivant représente le nom complet (le chemin d'accès complet) du tableau « auteurs », qui est le nœud non static, et contient le nœud statique « répertorie » : « /Tables/UserTables/Table pubs.dbo.authors [] ».
Dans ce cas, l'ID de nœud est « /Tables/UserTables/ » parce que c'est le chemin d'accès qui conduit au nœud en question.
Pour une description du format du nom complet du nœud, consultez l' FullName.
ID de nœud pour les nœuds non statiques
Toutefois, l'ID de nœud d'un nœud non static représente le nœud qui contient des propriétés pour sélectionner des objets situé en dessous. Ce nœud est en général un nœud parent des objets à sélectionner. En particulier, le processus de sélection d'objet recherche l'ID de nœud du nœud parent suivant dans la hiérarchie de vue qui possède des propriétés pour sélectionner des objets, c. autrement dit., si le premier parent ne fournit pas ces propriétés, l'ID de nœud du parent suivant dans la hiérarchie est examiné jusqu'à ce qu'un parent qualifié soit trouvé.
Par exemple, supposons qu'un nœud de la table non static existe dans la hiérarchie de vue appelées « auteurs » qui contient deux colonnes appelées « au_id » et « au_name ». Ce tableau et d'autres tables sont sous « répertorie » le nœud statique. Pour sélectionner ces colonnes, le client doit identifier l'ID de nœud du parent de la sélection de la colonne qui, dans cet exemple est l'ID de nœud du nœud de sélection de tables. XML ci-dessous illustre cet exemple.
<StaticNode nodeId="Tables">
<Children>
<Selection type="Table">
<SelectionNode nodeId="Table">
<Children>
<Selection type="Column" restrictions="{Table.Name}">
...
</Selection>
</Children>
</SelectionNode>
</Selection>
</Children>
</StaticNode>
Nom complet de nœud
Les nœuds de la hiérarchie peuvent avoir un nom complet qui est affiché avec son icône dans Visual Studio Explorateur de serveurs. Seuls les nœuds statiques, y compris les nœuds statiques de connexion, nécessitent le nom complet, car il peut être déduit pour les autres types de nœuds.
Pour activer le nom complet d'un nœud, utilisez l'élément d' DisplayName . Cela vous permet de spécifier le nom de nœud comme affiché dans l'IDE, ainsi que pour spécifier comment mettre en forme le nom complet. (Pour un nœud de connexion, l'élément approprié est appelé l'élément d' InitialDisplayName car le nom complet d'un nœud de connexion peut être modifié par l'utilisateur.) Pour mettre en forme le nom complet, contenu de chaîne simple d'utilisation ou référence une ressource exposée par la section de ressources XML.
Vous pouvez appliquer un nom complet à l'aide de l'attribut facultatif d' when , qui vous permet de spécifier une expression évaluée pour décider, de manière conditionnelle, si le format donné est correct dans un ensemble donné de conditions.
l'application conditionnelle du nom complet et du format peut se produire pour plusieurs raisons. Par exemple, vous pouvez afficher le nom du propriétaire en regard de le nom de la table uniquement si la condition que le nom du propriétaire est différent du nom d'utilisateur actuel.
L'exemple de code sous le représentant XML de l'pour gérer l'application conditionnelle du nom complet, comme dans le scénario ci-dessus.
<SelectionNode>
<DisplayName when="NOT ({Schema} = {Database.UserName})">
{Name} ({Schema})
</DisplayName>
</SelectionNode>
Toutefois, l'expression littérale pour cette expression conditionnelle est le suivant : pour ce nœud de sélection, la valeur de nom complet doit être le nom de la table de base de données suivi du propriétaire du tableau entre parenthèses, dans les cas où le schéma de tableau n'est pas égal à l'utilisateur actuel dans la base de données.
Dans cet exemple il n'y a pas de nom d'affichage par défaut, mais plutôt un format de nom spécifié par une expression conditionnelle. Cela est autorisé aux nœuds de connexion d'objet et les nœuds de sélection, puisque ces types de nœuds permettent à un format par défaut d'être dérivé de l'objet sous-jacent. Pour les nœuds statiques de connexion, en revanche, le schéma met en vigueur la spécification qu'au moins un élément d' DisplayName soit fourni.
Enfants de nœud
Les nœuds doivent utiliser l'élément d' Children pour spécifier leurs nœuds enfants.
Il existe trois types de nœuds enfants :
Statique. Tout nœud peut avoir un nœud statique pour un enfant, y compris un autre nœud statique. Par exemple, une collection développée « tables de base » peut afficher des tables « système » et « tables utilisateur. »
sélection. Ce type de nœud enfant se développe vers un certain nombre de nœuds enfants basés sur une sélection des objets énumérés du serveur. Pour cela, supposez dans la vue de données que vous souhaitez afficher une liste de tables de votre source de données. Vous pouvez écrire le code XML suivant pour cela :
<StaticNode> <DisplayName>Tables</DisplayName> <Children> <Selection type="Table"/> </Children> </StaticNode>
XML ci-dessus provoquerait la hiérarchie suivante à afficher :
- Tables - <Table 1> - <Table 2> - ...