HierarchicalDataSourceView 类

定义

表示 HierarchicalDataSourceControl 控件的分层数据结构中的节点或节点集合上的数据视图。

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
继承
HierarchicalDataSourceView
派生

示例

下面的代码示例演示如何从 HierarchicalDataSourceView 类派生类,以便从分层数据存储中检索数据,在本例中为文件系统。 该 FileSystemDataSourceView 类是一个强类型 HierarchicalDataSourceView 实例,它使分层 Web 服务器控件(如 TreeView 控件)绑定到 FileSystemDataSource 控件并显示文件系统信息。 出于安全考虑,仅当数据源控件正在使用 localhost、身份验证方案时,才会显示文件系统信息,并且仅从使用数据源控件的Web Forms页所在的虚拟目录开始。 否则, viewPath 传递给构造函数的参数可用于基于当前文件系统路径创建视图。 此代码示例是为类提供的大型示例的 HierarchicalDataSourceControl 一部分。

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

注解

ASP.NET 支持数据绑定体系结构,使 Web 服务器控件能够绑定到数据并采用一致的方式呈现数据。 绑定到数据的 Web 服务器控件称为数据绑定控件,以及有助于绑定的类称为数据源控件。 数据源控件可以表示任何数据源:文件、流、关系数据库、业务对象等。 无论基础数据的源或格式如何,数据源控件都以一致的方式呈现数据绑定控件。

表示分层数据的数据源控件派生自抽象 HierarchicalDataSourceControl 类。 可以将数据源控件视为数据源控件对象及其关联视图的组合,这些视图由数据源视图对象表示。 分层数据源控件支持它们所表示的每个分层数据的分层数据源视图。 数据源视图没有命名,如 DataSourceView 与控件关联的对象,但由其唯一 DataSourceControl 的分层路径标识。

数据源视图定义数据源控件的功能。 所有数据源视图对象(包括 HierarchicalDataSourceView)都支持使用 Select 该方法从基础数据源检索数据,该方法将数据分层列表检索为 IHierarchicalEnumerable 对象。 所有数据源视图对象(可选)都支持一组基本功能,包括诸如、UpdateDelete和排序等Insert操作。 数据绑定控件可以通过使用 GetHierarchicalView 方法检索关联的数据源视图并在设计时或运行时查询视图来发现数据源控件的功能。 HierarchicalDataSourceView当前不支持InsertUpdateDelete操作。

实施者说明

HierarchicalDataSourceView 继承时,必须重写以下成员:Select()

构造函数

HierarchicalDataSourceView()

初始化 HierarchicalDataSourceView 类的新实例。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Select()

获取视图中所有数据项的列表。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅