常见节点功能

三个函数为所有数据视图节点是常见的:

  • 节点 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>
    - ...  
    

请参见

概念

数据视图节点

特殊节点功能