三个函数为所有数据视图节点是常见的:
节点 ID
节点显示名称
节点的子节点
节点 ID
具有节点 ID 的两种类型,根据使用的上下文。 对于静态节点指定,这是节点没有基础对象的节点 ID,比为具有基础对象的非静态节点指定节点 ID 包含一个不同的值。
请注意对节点 ID 的引用对应于 DataViewSupport 架构定义的 nodeId XML 属性。
静态节点的节点 ID
静态节点的节点 ID 是非静态表示形式生成该非静态节点路径的节点的全名的一部分。 例如,下面的表示全名 (完整路径) 的 “生成”表,为非静态节点,并包含静态节点 “表”:“/Tables/UserTables/Table pubs.dbo.authors []”。
在这种情况下,节点 ID 为 “/Tables/UserTables/”,因为这会导致所涉及的节点的是路径。
有关节点的完整名称格式的说明,请参见 FullName。
非静态节点的节点 ID
但是,非静态节点的节点 ID 表示包含选定的对象属性其下方的节点。 此节点通常是要选择的对象的父节点。 具体而言,对象选择过程查找下一个父节点的节点 ID 在中,即视图层次结构中,可以选择对象的属性,如果第一个父级未提供这些属性,下父节点 ID 该层次结构中处于选中状态,直至找到限定的父级。
例如,假设一个非静态表节点存在于包含名为 “au_id”和 “au_name”的两个列称为 “author's”的视图层次结构。 此表和其他表在下 “表”静态节点。 若要选择这些列,客户端需要标识列选择的父级的节点 ID,在此示例中为选定节点的节点 ID。 下面的 XML 文档此示例。
<StaticNode nodeId="Tables">
<Children>
<Selection type="Table">
<SelectionNode nodeId="Table">
<Children>
<Selection type="Column" restrictions="{Table.Name}">
...
</Selection>
</Children>
</SelectionNode>
</Selection>
</Children>
</StaticNode>
节点显示名称
层次结构节点可以具有显示与其在 Visual Studio 服务器资源管理器的图标的显示名称。 ,因为可用于其他节点类型,推断只有静态节点,包括静态连接节点,需要显示名称。
若要启用节点的显示名称,请使用 DisplayName 元素。 这允许您指定节点名称显示在 IDE,以及指定如何设置显示名称。 (对于连接节点,相应的元素调用 InitialDisplayName 元素,因为显示名称连接节点都可由用户修改。)格式显示名称,使用简单字符串内容或引用 XML 的资源部分显示的资源。
通过使用选项 when 属性,可以,有条件地,将显示名称,可以指定计算表达式确定给定的格式是否正确在给定的情况下设置。
显示名称和格式的条件应用程序可以出于多种原因导致。 例如,您可能希望为表名旁边仅显示所有者名称在+这+个+情况+下所有者名称与当前用户名不同。
在显示有代表性的 XML 下面的代码示例处理的显示名称的条件应用程序,如上述方案中所述。
<SelectionNode>
<DisplayName when="NOT ({Schema} = {Database.UserName})">
{Name} ({Schema})
</DisplayName>
</SelectionNode>
但是,此条件表达式的文本表达式如下:此节点,选择,在表模式与当前用户不相等在数据库中情况下,显示名称值应为括号的表的所有者遵循的数据库表的名称。
在此示例中未显示名称,,而是一个条件表达式指定名称格式。 ,因为这些节点类型允许默认格式从基础对象,派生时允许对象连接节点并选择节点。 对静态连接节点,另一方面,该模式强制提供至少一个 DisplayName 元素的要求。
节点的子节点
节点必须使用 Children 元素指定其子节点。
具有子节点的三种类型:
静态。 所有节点可以具有子级的静态节点,包括另一个静态节点。 例如,展开 “基表”集合可能显示 “系统表”和 “用户”表。
选择。 此子节点类型扩展到基于服务器枚举对象的选择的子节点。 为了演示此,假设在要显示表列出了来自数据源的数据视图。 您可以编写执行此操作的以下 XML:
<StaticNode> <DisplayName>Tables</DisplayName> <Children> <Selection type="Table"/> </Children> </StaticNode>
上面的 XML 将导致层次结构如下所示:
- Tables - <Table 1> - <Table 2> - ...