HierarchicalDataSourceView Classe

Definição

Representa uma exibição de dados em um nó ou uma coleção de nós em uma estrutura de dados hierárquica para um controle HierarchicalDataSourceControl.

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 a seguir demonstra como derivar uma classe da HierarchicalDataSourceView classe para recuperar dados do armazenamento de dados hierárquico, nesse caso, um sistema de arquivos. A FileSystemDataSourceView classe é uma instância fortemente tipada HierarchicalDataSourceView que permite controles hierárquicos do servidor Web, como o TreeView controle, para associar a um FileSystemDataSource controle e exibir informações do sistema de arquivos. Para fins de segurança, as informações do sistema de arquivos só serão exibidas se o controle da fonte de dados estiver sendo usado em um localhost, cenário autenticado e começar somente com o diretório virtual no qual a página Web Forms usando o controle da fonte de dados reside. Caso contrário, o viewPath parâmetro passado para o construtor pode ser usado para criar uma exibição com base no caminho atual do sistema de arquivos. 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

Comentários

ASP.NET dá suporte a uma arquitetura de associação de dados que permite que os controles do servidor Web se associem aos dados e os apresentem de forma consistente. Os controles de servidor Web associados aos dados são chamados de controles associados a dados e as classes que facilitam essa associação são chamadas de controles de fonte de dados. Os controles de fonte de dados podem representar qualquer fonte de dados: um arquivo, um fluxo, um banco de dados relacional, um objeto de negócios e assim por diante. Os controles de fonte de dados apresentam dados de forma consistente para controles associados a dados, independentemente da origem ou formato dos dados subjacentes.

Controles de fonte de dados que representam dados hierárquicos derivam da classe abstrata HierarchicalDataSourceControl . Você pode pensar em um controle de fonte de dados como a combinação do objeto de controle da fonte de dados e suas exibições associadas nos dados subjacentes, que são representados por objetos de exibição da fonte de dados. Controles hierárquicos de fonte de dados dão suporte a uma exibição hierárquica de fonte de dados para cada nível hierárquico de dados que representam. As exibições da fonte de dados não são nomeadas, como os DataSourceView objetos associados a um DataSourceControl controle, mas são identificadas por seu caminho hierárquico exclusivo.

As exibições da fonte de dados definem os recursos de um controle de fonte de dados. Todos os objetos de exibição da fonte de dados, incluindo HierarchicalDataSourceView, dão suporte à recuperação de dados da fonte de dados subjacente usando o Select método, que recupera uma lista hierárquica de dados como um IHierarchicalEnumerable objeto. Opcionalmente, todos os objetos de exibição da fonte de dados dão suporte a um conjunto básico de recursos, incluindo operações como Insert, Updatee Deleteclassificação. Um controle associado a dados pode descobrir os recursos de um controle de fonte de dados recuperando uma exibição de fonte de dados associada usando o GetHierarchicalView método e consultando a exibição em tempo de design ou em tempo de execução. HierarchicalDataSourceViewatualmente não dá suporte Inserta operações ou Delete operaçõesUpdate.

Notas aos Implementadores

Ao herdar, HierarchicalDataSourceViewvocê deve substituir o seguinte membro: Select().

Construtores

HierarchicalDataSourceView()

Inicializa uma nova instância da classe HierarchicalDataSourceView.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
Select()

Obtém uma lista de todos os itens de dados na exibição.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também