HierarchicalDataSourceView Klasse

Definition

Stellt eine Datenansicht auf einem Knoten oder einer Auflistung von Knoten in einer hierarchischen Datenstruktur für ein HierarchicalDataSourceControl Steuerelement dar.

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Vererbung
HierarchicalDataSourceView
Abgeleitet

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie eine Klasse von der HierarchicalDataSourceView Klasse abgeleitet wird, um Daten aus dem hierarchischen Datenspeicher abzurufen, in diesem Fall ein Dateisystem. Die FileSystemDataSourceView Klasse ist eine stark typierte HierarchicalDataSourceView Instanz, die hierarchische Webserversteuerelemente wie das TreeView Steuerelement zum Binden an ein FileSystemDataSource Steuerelement und das Anzeigen von Dateisysteminformationen ermöglicht. Aus Sicherheitsgründen werden Dateisysteminformationen nur angezeigt, wenn das Datenquellensteuerelement in einem lokalhost, authentifizierten Szenario verwendet wird und nur mit dem virtuellen Verzeichnis beginnt, in dem sich die Webseite mit dem Datenquellensteuerelement befindet. Andernfalls kann der viewPath an den Konstruktor übergebene Parameter verwendet werden, um eine Ansicht basierend auf dem aktuellen Dateisystempfad zu erstellen. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die HierarchicalDataSourceControl Klasse bereitgestellt wird.

public class FileSystemDataSourceView : HierarchicalDataSourceView
{
    private string _viewPath;

    public FileSystemDataSourceView(string viewPath)
    {
        HttpRequest currentRequest = HttpContext.Current.Request;
        if (viewPath == "")
        {
            _viewPath = currentRequest.MapPath(currentRequest.ApplicationPath);
        }
        else
        {
            _viewPath = Path.Combine(
                currentRequest.MapPath(currentRequest.ApplicationPath),
                viewPath);
        }
    }

    // Starting with the rootNode, recursively build a list of
    // FileSystemInfo nodes, create FileSystemHierarchyData
    // objects, add them all to the FileSystemHierarchicalEnumerable,
    // and return the list.
    public override IHierarchicalEnumerable Select()
    {
        HttpRequest currentRequest = HttpContext.Current.Request;

        // SECURITY: There are many security issues that can be raised
        // SECURITY: by exposing the file system structure of a Web server
        // SECURITY: to an anonymous user in a limited trust scenario such as
        // SECURITY: a Web page served on an intranet or the Internet.
        // SECURITY: For this reason, the FileSystemDataSource only
        // SECURITY: shows data when the HttpRequest is received
        // SECURITY: from a local Web server. In addition, the data source
        // SECURITY: does not display data to anonymous users.
        if (currentRequest.IsAuthenticated &&
            (currentRequest.UserHostAddress == "127.0.0.1" ||
             currentRequest.UserHostAddress == "::1"))
        {
            DirectoryInfo rootDirectory = new DirectoryInfo(_viewPath);
            if (!rootDirectory.Exists)
            {
                return null;
            }

            FileSystemHierarchicalEnumerable fshe =
                new FileSystemHierarchicalEnumerable();

            foreach (FileSystemInfo fsi
                in rootDirectory.GetFileSystemInfos())
            {
                fshe.Add(new FileSystemHierarchyData(fsi));
            }
            return fshe;
        }
        else
        {
            throw new NotSupportedException(
                "The FileSystemDataSource only " +
                "presents data in an authenticated, localhost context.");
        }
    }
}
Public Class FileSystemDataSourceView
    Inherits HierarchicalDataSourceView

    Private _viewPath As String

    Public Sub New(ByVal viewPath As String)
        Dim currentRequest As HttpRequest = HttpContext.Current.Request
        If viewPath = "" Then
            _viewPath = currentRequest.MapPath(currentRequest.ApplicationPath)
        Else
            _viewPath = Path.Combine(currentRequest.MapPath(currentRequest.ApplicationPath), viewPath)
        End If
    End Sub


    ' Starting with the rootNode, recursively build a list of
    ' FileSystemInfo nodes, create FileSystemHierarchyData
    ' objects, add them all to the FileSystemHierarchicalEnumerable,
    ' and return the list.
    Public Overrides Function [Select]() As IHierarchicalEnumerable
        Dim currentRequest As HttpRequest = HttpContext.Current.Request

        ' SECURITY: There are many security issues that can be raised
        ' SECURITY: by exposing the file system structure of a Web server
        ' SECURITY: to an anonymous user in a limited trust scenario such as
        ' SECURITY: a Web page served on an intranet or the Internet.
        ' SECURITY: For this reason, the FileSystemDataSource only
        ' SECURITY: shows data when the HttpRequest is received
        ' SECURITY: from a local Web server. In addition, the data source
        ' SECURITY: does not display data to anonymous users.
        If currentRequest.IsAuthenticated AndAlso _
            (currentRequest.UserHostAddress = "127.0.0.1" OrElse _
             currentRequest.UserHostAddress = "::1") Then

            Dim rootDirectory As New DirectoryInfo(_viewPath)

            Dim fshe As New FileSystemHierarchicalEnumerable()

            Dim fsi As FileSystemInfo
            For Each fsi In rootDirectory.GetFileSystemInfos()
                fshe.Add(New FileSystemHierarchyData(fsi))
            Next fsi
            Return fshe
        Else
            Throw New NotSupportedException( _
                "The FileSystemDataSource only " + _
                "presents data in an authenticated, localhost context.")
        End If
    End Function 'Select
End Class

Hinweise

ASP.NET unterstützt eine Datenbindungsarchitektur, mit der Webserversteuerelemente an Daten gebunden und einheitlich dargestellt werden können. Webserversteuerelemente, die an Daten gebunden sind, werden als datengebundene Steuerelemente bezeichnet, und die Klassen, die diese Bindung erleichtern, werden als Datenquellensteuerelemente bezeichnet. Datenquellensteuerelemente können eine beliebige Datenquelle darstellen: eine Datei, einen Datenstrom, eine relationale Datenbank, ein Geschäftsobjekt usw. Datenquellensteuerelemente stellen Daten auf konsistente Weise für datengebundene Steuerelemente dar, unabhängig von der Quelle oder dem Format der zugrunde liegenden Daten.

Datenquellensteuerelemente, die hierarchische Daten darstellen, werden von der abstrakten HierarchicalDataSourceControl Klasse abgeleitet. Sie können sich ein Datenquellensteuerelement als Kombination aus dem Datenquellensteuerelementobjekt und den zugehörigen Ansichten der zugrunde liegenden Daten vorstellen, die durch Datenquellenansichtsobjekte dargestellt werden. Hierarchische Datenquellensteuerelemente unterstützen eine hierarchische Datenquellenansicht für jede hierarchische Datenebene, die sie darstellen. Die Datenquellenansichten werden nicht benannt, z. B. die DataSourceView einem Steuerelement zugeordneten DataSourceControl Objekte, sondern durch ihren eindeutigen hierarchischen Pfad identifiziert.

Datenquellenansichten definieren die Funktionen eines Datenquellensteuerelements. Alle Datenquellenansichtsobjekte, einschließlich HierarchicalDataSourceView, unterstützen das Abrufen von Daten aus der zugrunde liegenden Datenquelle mithilfe der Select Methode, die eine hierarchische Liste von Daten als IHierarchicalEnumerable Objekt abruft. Alle Datenquellenansichtsobjekte unterstützen optional einen grundlegenden Satz von Funktionen, einschließlich Vorgängen wie Insert, , Update, Deleteund Sortieren. Ein datengebundenes Steuerelement kann die Funktionen eines Datenquellensteuerelements ermitteln, indem eine zugeordnete Datenquellenansicht mithilfe der GetHierarchicalView Methode abgerufen und die Ansicht zur Entwurfszeit oder zur Laufzeit abgerufen wird. HierarchicalDataSourceViewunterstützt InsertUpdateDelete derzeit weder Vorgänge noch Vorgänge.

Hinweise für Ausführende

Wenn Sie von HierarchicalDataSourceViewerben, müssen Sie das folgende Element überschreiben: Select().

Konstruktoren

Name Beschreibung
HierarchicalDataSourceView()

Initialisiert eine neue Instanz der HierarchicalDataSourceView-Klasse.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Select()

Ruft eine Liste aller Datenelemente in der Ansicht ab.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen