HierarchicalDataSourceView Класс

Определение

Представляет представление данных на узле или коллекции узлов в иерархической структуре данных для HierarchicalDataSourceControl элемента управления.

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Наследование
HierarchicalDataSourceView
Производный

Примеры

В следующем примере кода показано, как наследовать класс из класса для получения данных из иерархического HierarchicalDataSourceView хранилища данных в данном случае файловой системы. Класс FileSystemDataSourceView — это строго типизированный HierarchicalDataSourceView экземпляр, который позволяет иерархическим элементам управления веб-сервера, таким как TreeView элемент управления, привязывать к элементу управления и отображать сведения о файловой FileSystemDataSource системе. В целях безопасности сведения о файловой системе отображаются только в том случае, если элемент управления источником данных используется в локальном узле, прошедшем проверку подлинности, и начинается только с виртуального каталога, в котором находится страница веб-форм с помощью элемента управления версиями данных. В противном случае параметр, переданный конструктору, 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 поддерживает архитектуру привязки данных, которая позволяет элементам управления веб-сервера привязаться к данным и представить их в согласованном режиме. Элементы управления веб-сервера, которые привязываются к данным, называются элементами управления с привязкой к данным, а классы, упрощающие привязку, называются элементами управления источниками данных. Элементы управления источниками данных могут представлять любой источник данных: файл, поток, реляционную базу данных, бизнес-объект и т. д. Элементы управления источниками данных представляют данные согласованно для элементов управления, привязанных к данным, независимо от источника или формата базовых данных.

Элементы управления источниками данных, представляющие иерархические данные, производные от абстрактного HierarchicalDataSourceControl класса. Вы можете представить элемент управления источниками данных как сочетание объекта управления источниками данных и его связанных представлений по базовым данным, которые представлены объектами представления источников данных. Элементы управления иерархическими источниками данных поддерживают иерархическое представление источника данных для каждого иерархического уровня данных, которые они представляют. Представления источника данных не именуются, как DataSourceView объекты, связанные с элементом DataSourceControl управления, но определяются их уникальным иерархическим путем.

Представления источников данных определяют возможности управления версиями данных. Все объекты представления источников данных, включая HierarchicalDataSourceViewподдержку извлечения данных из базового источника данных с помощью Select метода, который получает иерархический список данных в качестве IHierarchicalEnumerable объекта. Все объекты представления источников данных при необходимости поддерживают базовый набор возможностей, включая такие операции, как Insert, Updateи Deleteсортировка. Элемент управления с привязкой к данным может обнаруживать возможности элемента управления источниками данных, извлекая связанное представление источника данных с помощью GetHierarchicalView метода и запрашивая представление во время разработки или во время выполнения. HierarchicalDataSourceViewв настоящее время не поддерживает InsertUpdate операции или Delete операции.

Примечания для тех, кто реализует этот метод

При наследовании от HierarchicalDataSourceViewнего необходимо переопределить следующий член: Select()

Конструкторы

Имя Описание
HierarchicalDataSourceView()

Инициализирует новый экземпляр класса HierarchicalDataSourceView.

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
Select()

Возвращает список всех элементов данных в представлении.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел