IHierarchyData Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Macht einen Knoten einer hierarchischen Datenstruktur verfügbar, einschließlich des Knotenobjekts und einiger Eigenschaften, die Merkmale des Knotens beschreiben. Objekte, die die IHierarchyData-Schnittstelle implementieren, können in IHierarchicalEnumerable-Auflistungen enthalten sein und werden für die Navigation in der ASP.NET-Site sowie für ASP.NET-Datenquellen-Steuerelemente verwendet.
public interface class IHierarchyData
public interface IHierarchyData
type IHierarchyData = interface
Public Interface IHierarchyData
- Abgeleitet
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die Schnittstelle mit einer Klasse implementiert wird, die IHierarchyData ein FileSystemInfo Objekt umschließt. Die FileSystemInfo Klasse ist ein gutes Beispiel für einen hierarchischen Datenknoten, der die IHierarchyData Schnittstelle für ASP.NET hierarchischen Datenquellensteuerelemente darstellt. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die HierarchicalDataSourceControl Klasse bereitgestellt wird.
public class FileSystemHierarchyData : IHierarchyData
{
private FileSystemInfo fileSystemObject = null;
public FileSystemHierarchyData(FileSystemInfo obj)
{
fileSystemObject = obj;
}
public override string ToString()
{
return fileSystemObject.Name;
}
// IHierarchyData implementation.
public bool HasChildren
{
get
{
if (typeof(DirectoryInfo) == fileSystemObject.GetType())
{
DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
return (temp.GetFileSystemInfos().Length > 0);
}
else
{
return false;
}
}
}
// DirectoryInfo returns the OriginalPath, while FileInfo returns
// a fully qualified path.
public string Path
{
get
{
return fileSystemObject.ToString();
}
}
public object Item
{
get
{
return fileSystemObject;
}
}
public string Type
{
get
{
return "FileSystemData";
}
}
public IHierarchicalEnumerable GetChildren()
{
FileSystemHierarchicalEnumerable children =
new FileSystemHierarchicalEnumerable();
if (typeof(DirectoryInfo) == fileSystemObject.GetType())
{
DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
foreach (FileSystemInfo fsi in temp.GetFileSystemInfos())
{
children.Add(new FileSystemHierarchyData(fsi));
}
}
return children;
}
public IHierarchyData GetParent()
{
FileSystemHierarchicalEnumerable parentContainer =
new FileSystemHierarchicalEnumerable();
if (typeof(DirectoryInfo) == fileSystemObject.GetType())
{
DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
return new FileSystemHierarchyData(temp.Parent);
}
else if (typeof(FileInfo) == fileSystemObject.GetType())
{
FileInfo temp = (FileInfo)fileSystemObject;
return new FileSystemHierarchyData(temp.Directory);
}
// If FileSystemObj is any other kind of FileSystemInfo, ignore it.
return null;
}
}
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
Im folgenden Codebeispiel wird veranschaulicht, wie Sie rekursiv eine IHierarchicalEnumerable Auflistung durchlaufen, das IHierarchyData Element mithilfe der GetHierarchyData Methode extrahieren und grundlegende Arbeit mit dem Datenelement ausführen.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ihd_1.aspx.cs" 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>
<%@ 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>
Hinweise
Die IHierarchyData Schnittstelle wird durch Klassen implementiert, die Knoten einer hierarchischen Struktur darstellen und die hierarchischen Beziehungen zu ihren übergeordneten und untergeordneten Knoten nachverfolgen. Klassen, die die IHierarchyData Schnittstelle implementieren, können in Auflistungen enthalten sein, die die IHierarchicalEnumerable Schnittstelle implementieren.
Eigenschaften
HasChildren |
Gibt an, ob der vom IHierarchyData-Objekt dargestellte hierarchische Datenknoten über untergeordnete Knoten verfügt. |
Item |
Ruft den hierarchischen Datenknoten ab, den das IHierarchyData-Objekt darstellt. |
Path |
Ruft den hierarchischen Pfad des Knotens ab. |
Type |
Ruft den Namen des in der Object-Eigenschaft enthaltenen Typs von Item ab. |
Methoden
GetChildren() |
Ruft ein Enumerationsobjekt ab, das alle untergeordneten Knoten des aktuellen hierarchischen Knotens darstellt. |
GetParent() |
Ruft ein IHierarchyData-Objekt ab, das den übergeordneten Knoten des aktuellen hierarchischen Knotens darstellt. |