Partager via


HierarchicalDataSourceView Classe

Définition

Représente une vue de données sur un nœud ou une collection de nœuds dans une structure de données hiérarchiques pour un contrôle HierarchicalDataSourceControl.

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Héritage
HierarchicalDataSourceView
Dérivé

Exemples

L’exemple de code suivant montre comment dériver une classe de la HierarchicalDataSourceView classe pour récupérer des données à partir d’un stockage de données hiérarchique, dans ce cas un système de fichiers. La FileSystemDataSourceView classe est une instance fortement typée HierarchicalDataSourceView qui permet aux contrôles serveur Web hiérarchiques tels que le TreeView contrôle de se lier à un FileSystemDataSource contrôle et d’afficher les informations du système de fichiers. À des fins de sécurité, les informations du système de fichiers s’affichent uniquement si le contrôle de source de données est utilisé dans un scénario localhost, authentifié et commence uniquement par le répertoire virtuel dans lequel réside la page Web Forms à l’aide du contrôle de source de données. Sinon, le viewPath paramètre passé au constructeur peut être utilisé pour créer une vue basée sur le chemin d’accès actuel du système de fichiers. Cet exemple de code fait partie d’un exemple plus grand fourni pour la HierarchicalDataSourceControl classe.

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

Remarques

ASP.NET prend en charge une architecture de liaison de données qui permet aux contrôles serveur Web de se lier aux données et de les présenter de manière cohérente. Les contrôles de serveur web qui se lient aux données sont appelés contrôles liés aux données et les classes qui facilitent cette liaison sont appelées contrôles de source de données. Les contrôles de source de données peuvent représenter n’importe quelle source de données : un fichier, un flux, une base de données relationnelle, un objet métier, et ainsi de suite. Les contrôles de source de données présentent des données de manière cohérente aux contrôles liés aux données, quelle que soit la source ou le format des données sous-jacentes.

Contrôles de source de données qui représentent des données hiérarchiques dérivent de la classe abstraite HierarchicalDataSourceControl . Vous pouvez considérer un contrôle de source de données comme la combinaison de l’objet de contrôle de source de données et de ses vues associées sur les données sous-jacentes, qui sont représentées par des objets de vue de source de données. Les contrôles de source de données hiérarchiques prennent en charge une vue de source de données hiérarchique pour chaque niveau hiérarchique de données qu’ils représentent. Les vues de source de données ne sont pas nommées, comme les DataSourceView objets associés à un DataSourceControl contrôle, mais sont identifiées par leur chemin hiérarchique unique.

Les vues de source de données définissent les fonctionnalités d’un contrôle de source de données. Tous les objets de vue de source de données, y compris HierarchicalDataSourceView, prennent en charge la récupération des données à partir de la source de données sous-jacente à l’aide de la Select méthode, qui récupère une liste hiérarchique de données en tant qu’objet IHierarchicalEnumerable . Tous les objets de vue de source de données prennent éventuellement en charge un ensemble de fonctionnalités de base, y compris les opérations telles que Insert, Update, Deleteet le tri. Un contrôle lié aux données peut découvrir les fonctionnalités d’un contrôle de source de données en récupérant une vue de source de données associée à l’aide de la GetHierarchicalView méthode et en interrogeant la vue au moment du design ou au moment de l’exécution. HierarchicalDataSourceView ne prend actuellement pas en charge Insertou Update Delete n’effectue pas d’opérations.

Notes pour les responsables de l’implémentation

Lorsque vous héritez de HierarchicalDataSourceView, vous devez remplacer le membre suivant : Select().

Constructeurs

HierarchicalDataSourceView()

Initialise une nouvelle instance de la classe HierarchicalDataSourceView.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Select()

Obtient une liste de tous les éléments de données dans l'affichage.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi