Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês
Esta documentação foi arquivada e não está sendo atualizada.

Classe HierarchicalDataSourceControl

Fornece uma classe base para controles de fonte de dados que representam dados hierárquicos.

Namespace:  System.Web.UI
Assembly:  System.Web (em System.Web.dll)

[BindableAttribute(false)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public abstract class HierarchicalDataSourceControl : Control, 
	IHierarchicalDataSource
<asp:HierarchicalDataSourceControl />

ASP.NET oferece suporte a uma arquitetura de vinculação de dados de controles que permite servidor Web controles para BIND a dados e apresentá-lo de maneira consistente.Controles do servidor Web que BIND a dados são chamados de controles ligados a dados e as classes que facilitam a vinculação são chamadas de controles de fonte de dados.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.Fonte de dados controles apresentar dados em uma forma consistente de dados-limite controles, independentemente da origem ou o formato dos dados subjacentes.

Controles de fonte de dados que representam dados hierárquicos derivam o HierarchicalDataSourceControl classe, enquanto os controles de fonte de dados que representam listas ou tabelas de dados se derivam do DataSourceControl classe. The HierarchicalDataSourceControl classe é a implementação base das IHierarchicalDataSource interface, que define um único método para recuperar hierárquica exibição da fonte de dados objetos associados ao controle de fonte de dados, GetHierarchicalView.

Você pode considerar um controle de fonte de dados sistema autônomo a combinação do HierarchicalDataSourceControl objeto e seus modos de exibição associados nos dados subjacentes, objetos de modo de exibição de origem de dados chamado. Enquanto controle de fonte de dados s representam dados tabulares são geralmente associados com apenas uma nomeadas de modo de exibição, a HierarchicalDataSourceControl classe oferece suporte a um exibição da fonte de dados para cada nível de dados hierárquicos que o controle de fonte de dados representa. O nível de dados hierárquicos é identificado por um caminho hierárquico exclusivo, passado para o GetHierarchicalView método na viewPath parâmetro. Cada HierarchicalDataSourceView objeto define sistema autônomo recursos de um controle de fonte de dados para o nível hierárquico representado e executa operações, sistema autônomo inserir, atualizar, excluir e classificar.

Controles do servidor Web que derivem do HierarchicalDataBoundControl classe, sistema autônomo TreeView, usar controles de fonte de dados hierárquica para BIND a dados hierárquicos.

Controles de fonte de dados são implementados sistema autônomo controles para habilitar a persistência declarativa e, opcionalmente, permitir a participação no gerenciamento de estado.Controles de fonte de dados não têm nenhum renderização visual e, portanto, não oferecem suporte a temas.

O exemplo de código a seguir demonstra como estender o abstract HierarchicalDataSourceControl classe e o HierarchicalDataSourceView classes e implementar o IHierarchicalEnumerable e IHierarchyData controle recupera de fonte de interfaces para criar um dados hierárquico arquivo informações do sistema. The FileSystemDataSource controle permite que controles de servidor da Web BIND a FileSystemInfo objetos e exibição básica arquivo informações do sistema. The FileSystemDataSource classe de exemplo fornece a implementação das GetHierarchicalView método, que recupera um FileSystemDataSourceView objeto. The FileSystemDataSourceView objeto recupera os dados do armazenamento de dados subjacente, nesse caso, informações de sistema da arquivo no servidor Web. Para fins de segurança, arquivo informações do sistema são exibidas somente se o controle da fonte de dados está sendo usado em um host local, cenário autenticado, e só começa com o diretório virtual que a página de Web Forms usando os dados de controle de origem reside no.Por fim, duas classes que implementam IHierarchicalEnumerable e IHierarchyData são fornecidos para empacotar o FileSystemInfo objetos que FileSystemDataSource usa.

using System;
    using System.Collections;
    using System.IO;
    using System.Runtime.InteropServices;
    using System.Security.Permissions;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
    publicclass FileSystemDataSource : HierarchicalDataSourceControl, IHierarchicalDataSource
    {
        public FileSystemDataSource() : base() {}

        // Return a strongly typed view for the current data source control.private FileSystemDataSourceView view = null;
        protectedoverride HierarchicalDataSourceView GetHierarchicalView(string viewPath) {
            if (null == view) {
                view = new FileSystemDataSourceView(viewPath);
            }
            return view;
        }

        // The FileSystemDataSource can be used declaratively. To enable// declarative use, override the default implementation of// CreateControlCollection to return a ControlCollection that// you can add to.protectedoverride ControlCollection CreateControlCollection() {
            returnnew ControlCollection(this);
        }
    }
    // The FileSystemDataSourceView class encapsulates the// capabilities of the FileSystemDataSource data source control.publicclass FileSystemDataSourceView : HierarchicalDataSourceView
    {
	private string _viewPath;

        public FileSystemDataSourceView(string viewPath)
        {
            // This implementation of HierarchicalDataSourceView does not// use the viewPath parameter but other implementations// could make use of it for retrieving values.
            _viewPath = 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.publicoverride 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"))
            {
                string rootPath = currentRequest.MapPath (currentRequest.ApplicationPath);

                DirectoryInfo rootDirectory = new DirectoryInfo(rootPath);

                FileSystemHierarchicalEnumerable fshe = new FileSystemHierarchicalEnumerable();

                foreach (FileSystemInfo fsi in rootDirectory.GetFileSystemInfos()) {
                    fshe.Add(new FileSystemHierarchyData(fsi));
                }
                return fshe;
            }
            else {
                thrownew NotSupportedException("The FileSystemDataSource only " + "presents data in an authenticated, localhost context.");
            }
        }
    }
    // A collection of FileSystemHierarchyData objectspublicclass FileSystemHierarchicalEnumerable : ArrayList, IHierarchicalEnumerable
    {
        public FileSystemHierarchicalEnumerable () : base (){
        }

        public IHierarchyData GetHierarchyData(object enumeratedItem) {
            return enumeratedItem as IHierarchyData;
        }
    }

    publicclass FileSystemHierarchyData : IHierarchyData
    {
        public FileSystemHierarchyData (FileSystemInfo obj) {
            fileSystemObject = obj;
        }

        private FileSystemInfo fileSystemObject = null;

        publicoverride string ToString() {
            return fileSystemObject.Name;
        }
        // IHierarchyData implementation.publicbool HasChildren {
            get {
                if (typeof(DirectoryInfo) ==  fileSystemObject.GetType()   ) {
                    DirectoryInfo temp = (DirectoryInfo) fileSystemObject;
                    return (temp.GetFileSystemInfos().Length > 0);
                }
                elsereturnfalse;
            }
        }
        // DirectoryInfo returns the OriginalPath, while FileInfo returns// a fully qualified path.public string Path {
            get {
                return fileSystemObject.ToString();
            }
        }
        public object Item {
            get {
                return fileSystemObject;
            }
        }
        public string Type {
            get {
                return"FileSystemData";
            }
        }
        public IHierarchicalEnumerable GetChildren() {
            FileSystemHierarchicalEnumerable children =
                new FileSystemHierarchicalEnumerable();

            if (typeof(DirectoryInfo) == fileSystemObject.GetType()) {
                DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
                foreach (FileSystemInfo fsi in temp.GetFileSystemInfos()) {
                    children.Add(new FileSystemHierarchyData(fsi));
                }
            }
            return children;
        }

        public IHierarchyData GetParent()
        {
            FileSystemHierarchicalEnumerable parentContainer =
                new FileSystemHierarchicalEnumerable();

            if (typeof(DirectoryInfo) == fileSystemObject.GetType())
            {
                DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
                returnnew FileSystemHierarchyData(temp.Parent);
            }
            elseif (typeof(FileInfo) == fileSystemObject.GetType())
            {
                FileInfo temp = (FileInfo)fileSystemObject;
                returnnew FileSystemHierarchyData(temp.Directory);
            }
            // If FileSystemObj is any other kind of FileSystemInfo, ignore it.returnnull;
        }
    }


O exemplo de código a seguir demonstra como BIND um declarativamenteTreeView controle de dados de sistema de arquivos usando o FileSystemDataSource exemplo.

<%@ Page Language="C#" %>
<%@ Register Tagprefix="aspSample" Namespace="Samples.AspNet.CS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">

            <asp:treeview
                id="TreeView1"
                runat="server"
                datasourceid="FileSystemDataSource1" />            

            <aspSample:filesystemdatasource
                id = "FileSystemDataSource1"
                runat = "server" />            

        </form>
    </body>
</html>


Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

o.NET Framework e.NET Compact Framework não oferecem suporte a todas as versões de cada plataforma. Para obter uma lista de versões suportadas, consulte Requisitos de sistema do .NET framework.

.NET Framework

Compatível com: 3.5, 3.0, 2.0
Mostrar: