HierarchicalDataSourceView Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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) |