Condividi tramite


HierarchicalDataSourceView Classe

Definizione

Rappresenta una visualizzazione dati in un nodo o un insieme di nodi di una struttura di dati gerarchica per un controllo HierarchicalDataSourceControl.

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Ereditarietà
HierarchicalDataSourceView
Derivato

Esempio

Nell'esempio di codice seguente viene illustrato come derivare una classe dalla classe per recuperare i dati dall'archivio HierarchicalDataSourceView dati gerarchico, in questo caso un file system. La FileSystemDataSourceView classe è un'istanza fortemente tipizzata HierarchicalDataSourceView che consente ai controlli server Web gerarchici, ad esempio il TreeView controllo di associare a un FileSystemDataSource controllo e visualizzare le informazioni sul file system. Ai fini della sicurezza, le informazioni sul file system vengono visualizzate solo se il controllo origine dati viene usato in uno scenario localhost, autenticato e inizia solo con la directory virtuale in cui risiede la pagina Web Forms utilizzando il controllo origine dati. In caso contrario, è possibile usare il viewPath parametro passato al costruttore per creare una vista in base al percorso del file system corrente. Questo esempio di codice fa parte di un esempio più ampio fornito per 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

Commenti

ASP.NET supporta un'architettura di data binding che consente ai controlli server Web di eseguire il binding ai dati e presentarlo in modo coerente. I controlli server Web associati ai dati sono denominati controlli associati a dati e le classi che facilitano l'associazione vengono denominate controlli origine dati. I controlli origine dati possono rappresentare qualsiasi origine dati: un file, un flusso, un database relazionale, un oggetto business e così via. I controlli origine dati presentano dati in modo coerente ai controlli associati a dati, indipendentemente dall'origine o dal formato dei dati sottostanti.

I controlli origine dati che rappresentano dati gerarchici derivano dalla classe astratta HierarchicalDataSourceControl . È possibile considerare un controllo origine dati come la combinazione dell'oggetto controllo origine dati e delle viste associate sui dati sottostanti, rappresentati da oggetti vista origine dati. I controlli origine dati gerarchici supportano una vista origine dati gerarchica per ogni livello gerarchico di dati che rappresentano. Le viste origine dati non sono denominate, ad esempio gli DataSourceView oggetti associati a un DataSourceControl controllo, ma sono identificate dal percorso gerarchico univoco.

Le viste origine dati definiscono le funzionalità di un controllo origine dati. Tutti gli oggetti vista origine dati, incluso HierarchicalDataSourceView, supportano il recupero dei dati dall'origine dati sottostante usando il Select metodo , che recupera un elenco gerarchico di dati come IHierarchicalEnumerable oggetto . Tutti gli oggetti vista origine dati supportano facoltativamente un set di funzionalità di base, incluse operazioni come Insert, Update, Deletee ordinamento. Un controllo associato a dati può individuare le funzionalità di un controllo origine dati recuperando una vista origine dati associata usando il GetHierarchicalView metodo e eseguendo una query sulla vista in fase di progettazione o in fase di esecuzione. HierarchicalDataSourceViewattualmente non supporta Insertle operazioni o Delete Update .

Note per gli implementatori

Quando si eredita da HierarchicalDataSourceView, è necessario eseguire l'override del membro Select().

Costruttori

HierarchicalDataSourceView()

Inizializza una nuova istanza della classe HierarchicalDataSourceView.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Select()

Ottiene un elenco di tutti gli elementi di dati presenti nella visualizzazione.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche