Export (0) Print
Expand All

IHierarchyData Interface

Exposes a node of a hierarchical data structure, including the node object and some properties that describe characteristics of the node. Objects that implement the IHierarchyData interface can be contained in IHierarchicalEnumerable collections, and are used by ASP.NET site navigation and data source controls.

Namespace:  System.Web.UI
Assembly:  System.Web (in System.Web.dll)

'Declaration
Public Interface IHierarchyData

The IHierarchyData type exposes the following members.

  NameDescription
Public propertyHasChildrenIndicates whether the hierarchical data node that the IHierarchyData object represents has any child nodes.
Public propertyItemGets the hierarchical data node that the IHierarchyData object represents.
Public propertyPathGets the hierarchical path of the node.
Public propertyTypeGets the name of the type of Object contained in the Item property.
Top

  NameDescription
Public methodGetChildrenGets an enumeration object that represents all the child nodes of the current hierarchical node.
Public methodGetParentGets an IHierarchyData object that represents the parent node of the current hierarchical node.
Top

The IHierarchyData interface is implemented by classes that represent nodes of a hierarchical structure, and track the hierarchical relationships to their parent and child nodes. Classes that implement the IHierarchyData interface can be contained in collections that implement the IHierarchicalEnumerable interface.

The following code example demonstrates how to implement the IHierarchyData interface with a class that wraps a FileSystemInfo object. The FileSystemInfo class is a good example of a hierarchical data node, which the IHierarchyData interface represents for ASP.NET hierarchical data source controls. This code example is part of a larger example provided for the HierarchicalDataSourceControl class.


Public Class FileSystemHierarchyData
    Implements IHierarchyData

    Public Sub New(ByVal obj As FileSystemInfo)
        fileSystemObject = obj
    End Sub 

    Private fileSystemObject As FileSystemInfo = Nothing 

    Public Overrides Function ToString() As String 
        Return fileSystemObject.Name
    End Function 

    ' IHierarchyData implementation. 
    Public Overridable ReadOnly Property HasChildren() As Boolean _
     Implements IHierarchyData.HasChildren
        Get 
            If GetType(DirectoryInfo) Is fileSystemObject.GetType() Then 
                Dim temp As DirectoryInfo = _
                    CType(fileSystemObject, DirectoryInfo)
                Return temp.GetFileSystemInfos().Length > 0
            Else 
                Return False 
            End If 
        End Get 
    End Property 
    ' DirectoryInfo returns the OriginalPath, while FileInfo returns 
    ' a fully qualified path. 

    Public Overridable ReadOnly Property Path() As String _
     Implements IHierarchyData.Path
        Get 
            Return fileSystemObject.ToString()
        End Get 
    End Property 

    Public Overridable ReadOnly Property Item() As Object _
     Implements IHierarchyData.Item
        Get 
            Return fileSystemObject
        End Get 
    End Property 

    Public Overridable ReadOnly Property Type() As String _
     Implements IHierarchyData.Type
        Get 
            Return "FileSystemData" 
        End Get 
    End Property 

    Public Overridable Function GetChildren() _
        As IHierarchicalEnumerable _
        Implements IHierarchyData.GetChildren

        Dim children As New FileSystemHierarchicalEnumerable()

        If GetType(DirectoryInfo) Is fileSystemObject.GetType() Then 
            Dim temp As DirectoryInfo = _
                CType(fileSystemObject, DirectoryInfo)
            Dim fsi As FileSystemInfo
            For Each fsi In temp.GetFileSystemInfos()
                children.Add(New FileSystemHierarchyData(fsi))
            Next fsi
        End If 
        Return children
    End Function 'GetChildren


    Public Overridable Function GetParent() As IHierarchyData _
     Implements IHierarchyData.GetParent
        Dim parentContainer As New FileSystemHierarchicalEnumerable()

        If GetType(DirectoryInfo) Is fileSystemObject.GetType() Then 
            Dim temp As DirectoryInfo = _
                CType(fileSystemObject, DirectoryInfo)
            Return New FileSystemHierarchyData(temp.Parent)
        ElseIf GetType(FileInfo) Is fileSystemObject.GetType() Then 
            Dim temp As FileInfo = CType(fileSystemObject, FileInfo)
            Return New FileSystemHierarchyData(temp.Directory)
        End If 
        ' If FileSystemObj is any other kind of FileSystemInfo, ignore it. 
        Return Nothing 
    End Function 'GetParent
End Class 'FileSystemHierarchyData

The following code example demonstrates how to recursively iterate through an IHierarchicalEnumerable collection, extract the IHierarchyData item from the enumerator using the GetHierarchyData method, and perform basic work with the data item.

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="ihd_1.aspx.vb" Inherits="ihd_1_aspx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft