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) |