Compartir vía


HierarchicalDataSourceView Clase

Definición

Representa una vista de datos en un nodo o colección de nodos en una estructura de datos jerárquica para un control HierarchicalDataSourceControl.

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Herencia
HierarchicalDataSourceView
Derivado

Ejemplos

En el ejemplo de código siguiente se muestra cómo derivar una clase de la HierarchicalDataSourceView clase para recuperar datos del almacenamiento de datos jerárquico, en este caso un sistema de archivos. La FileSystemDataSourceView clase es una instancia fuertemente tipada HierarchicalDataSourceView que permite que los controles jerárquicos del servidor web, como el TreeView control, se enlacen a un FileSystemDataSource control y muestren la información del sistema de archivos. Con fines de seguridad, la información del sistema de archivos solo se muestra si el control de origen de datos se usa en un localhost, escenario autenticado y solo comienza con el directorio virtual en el que reside la página de Web Forms mediante el control de origen de datos. De lo contrario, el viewPath parámetro pasado al constructor podría usarse para crear una vista basada en la ruta de acceso del sistema de archivos actual. Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la HierarchicalDataSourceControl clase .

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

Comentarios

ASP.NET admite una arquitectura de enlace de datos que permite a los controles de servidor web enlazar a datos y presentarlos de forma coherente. Los controles de servidor web que se enlazan a datos se denominan controles enlazados a datos y las clases que facilitan ese enlace se denominan controles de origen de datos. Los controles de origen de datos pueden representar cualquier origen de datos: un archivo, un flujo, una base de datos relacional, un objeto de negocio, etc. Los controles de origen de datos presentan datos de forma coherente a los controles enlazados a datos, independientemente del origen o el formato de los datos subyacentes.

Los controles de origen de datos que representan datos jerárquicos derivan de la clase abstracta HierarchicalDataSourceControl . Puede considerar un control de origen de datos como la combinación del objeto de control de origen de datos y sus vistas asociadas en los datos subyacentes, que se representan mediante objetos de vista del origen de datos. Los controles jerárquicos de origen de datos admiten una vista jerárquica del origen de datos para cada nivel jerárquico de datos que representan. Las vistas del origen de datos no tienen nombre, como los DataSourceView objetos asociados a un DataSourceControl control, pero se identifican mediante su ruta de acceso jerárquica única.

Las vistas del origen de datos definen las funcionalidades de un control de origen de datos. Todos los objetos de vista del origen de datos, incluidos HierarchicalDataSourceView, admiten la recuperación de datos desde el origen de datos subyacente mediante el Select método , que recupera una lista jerárquica de datos como un IHierarchicalEnumerable objeto. Todos los objetos de vista del origen de datos admiten opcionalmente un conjunto básico de funcionalidades, incluidas las operaciones como Insert, Update, Deletey la ordenación. Un control enlazado a datos puede detectar las funciones de un control de origen de datos recuperando una vista de origen de datos asociada mediante el GetHierarchicalView método y consultando la vista en tiempo de diseño o en tiempo de ejecución. HierarchicalDataSourceView actualmente no admite Insertlas operaciones , Update ni Delete .

Notas a los implementadores

Cuando herede de HierarchicalDataSourceView, debe reemplazar el siguiente miembro: Select().

Constructores

HierarchicalDataSourceView()

Inicializa una nueva instancia de la clase HierarchicalDataSourceView.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Select()

Obtiene una lista de todos los elementos de datos de la vista.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también