HierarchicalDataSourceView Classe

Definição

Representa uma vista de dados num nó ou coleção de nós numa estrutura de dados hierárquica para um HierarchicalDataSourceControl controlo.

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Herança
HierarchicalDataSourceView
Derivado

Exemplos

O exemplo de código seguinte demonstra como derivar uma classe a partir da HierarchicalDataSourceView classe para recuperar dados de armazenamento hierárquico, neste caso um sistema de ficheiros. A FileSystemDataSourceView classe é uma instância fortemente tipada HierarchicalDataSourceView que permite que controlos hierárquicos de servidores Web, como o controlo, TreeView se associem a um FileSystemDataSource controlo e mostrem informações do sistema de ficheiros. Por razões de segurança, a informação do sistema de ficheiros é exibida apenas se o controlo de fonte de dados estiver a ser usado num cenário localhost, autenticado, e só começa com o diretório virtual onde reside a página Web Forms usando o controlo de fonte de dados. Caso contrário, o viewPath parâmetro passado ao construtor pode ser usado para criar uma vista baseada no caminho atual do sistema de ficheiros. Este exemplo de código faz parte de um exemplo maior fornecido para a 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

Observações

O ASP.NET suporta uma arquitetura de ligação de dados que permite que os controlos do servidor Web se vinculem aos dados e os apresentem de forma consistente. Os controlos de servidor web que se ligam a dados são chamados controlos data-bound, e as classes que facilitam essa ligação são chamadas controlos de fonte de dados. Os controlos de fonte de dados podem representar qualquer fonte de dados: um ficheiro, um fluxo, uma base de dados relacional, um objeto de negócio, e assim por diante. Os controlos de fonte de dados apresentam dados de forma consistente aos controlos ligados aos dados, independentemente da origem ou formato dos dados subjacentes.

Os controlos de fonte de dados que representam dados hierárquicos derivam da classe abstrata HierarchicalDataSourceControl . Pode pensar num controlo de fonte de dados como a combinação do objeto de controlo de fonte de dados e das suas vistas associadas sobre os dados subjacentes, que são representadas por objetos de vista de fonte de dados. Os controlos de fonte de dados hierárquicos suportam uma vista de fonte de dados hierárquica para cada nível hierárquico de dados que representam. As vistas da fonte de dados não são nomeadas, tal como os DataSourceView objetos associados a um DataSourceControl controlo, mas são identificadas pelo seu caminho hierárquico único.

As vistas de fonte de dados definem as capacidades de um controlo de fonte de dados. Todos os objetos da vista da fonte de dados, incluindo HierarchicalDataSourceView, suportam a recuperação de dados da fonte subjacente usando o Select método, que recupera uma lista hierárquica de dados como IHierarchicalEnumerable objeto. Todos os objetos da vista da fonte de dados suportam opcionalmente um conjunto básico de capacidades, incluindo operações como Insert, Update, Delete, e ordenação. Um controlo data-bound pode descobrir as capacidades de um controlo de fonte de dados ao recuperar uma vista de fonte associada usando o GetHierarchicalView método e consultar a vista em tempo de design ou em tempo de execução. HierarchicalDataSourceView atualmente não suporta Insert, Update nem Delete operações.

Notas para Implementadores

Quando herdar de HierarchicalDataSourceView, deve sobrepor o seguinte membro: Select().

Construtores

Name Description
HierarchicalDataSourceView()

Inicializa uma nova instância da HierarchicalDataSourceView classe.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Select()

Obtém uma lista de todos os itens de dados na vista.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também