Udostępnij za pośrednictwem


HierarchicalDataSourceView Klasa

Definicja

Reprezentuje widok danych w węźle lub kolekcji węzłów w strukturze danych hierarchicznych dla kontrolki HierarchicalDataSourceControl .

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Dziedziczenie
HierarchicalDataSourceView
Pochodne

Przykłady

W poniższym przykładzie kodu pokazano, jak uzyskać klasę z HierarchicalDataSourceView klasy w celu pobrania danych z magazynu danych hierarchicznych, w tym przypadku systemu plików. Klasa FileSystemDataSourceView jest silnie typicznym HierarchicalDataSourceView wystąpieniem, które umożliwia hierarchiczne kontrolki serwera sieci Web, takie jak kontrolka TreeView związana z kontrolką FileSystemDataSource i wyświetlaniem informacji o systemie plików. W celach zabezpieczających informacje o systemie plików są wyświetlane tylko wtedy, gdy kontrola źródła danych jest używana w lokalnym hoście, uwierzytelnionych scenariuszach i rozpoczyna się tylko od katalogu wirtualnego, w którym znajduje się strona Web Forms przy użyciu kontroli źródła danych. viewPath W przeciwnym razie parametr przekazany do konstruktora może służyć do utworzenia widoku na podstawie bieżącej ścieżki systemu plików. Ten przykład kodu jest częścią większego przykładu podanego HierarchicalDataSourceControl dla klasy.

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

Uwagi

ASP.NET obsługuje architekturę powiązania danych, która umożliwia kontrolkom serwera sieci Web powiązanie z danymi i prezentowanie ich w spójny sposób. Kontrolki serwera sieci Web powiązane z danymi są nazywane kontrolkami powiązanymi z danymi, a klasy, które ułatwiają powiązanie, są nazywane kontrolkami źródła danych. Kontrolki źródła danych mogą reprezentować dowolne źródło danych: plik, strumień, relacyjna baza danych, obiekt biznesowy itd. Kontrolki źródła danych przedstawiają dane w spójny sposób na powiązane z danymi kontrolki niezależnie od źródła lub formatu danych bazowych.

Kontrolki źródła danych reprezentujące dane hierarchiczne pochodzące z klasy abstrakcyjnej HierarchicalDataSourceControl . Kontrolkę źródła danych można traktować jako kombinację obiektu kontroli źródła danych i skojarzonych z nimi widoków danych na danych bazowych, które są reprezentowane przez obiekty widoku źródła danych. Hierarchiczne kontrolki źródła danych obsługują hierarchiczny widok źródła danych dla każdego reprezentowanego przez siebie poziomu hierarchicznego danych. Widoki źródła danych nie są nazwane, takie jak DataSourceView obiekty skojarzone z kontrolką, ale są identyfikowane przez ich unikatową DataSourceControl ścieżkę hierarchiczną.

Widoki źródła danych definiują możliwości kontroli źródła danych. Wszystkie obiekty widoku źródła danych, w tym HierarchicalDataSourceView, obsługują pobieranie danych z bazowego źródła danych przy użyciu Select metody , która pobiera hierarchiczną listę danych jako IHierarchicalEnumerable obiekt. Wszystkie obiekty widoku źródła danych opcjonalnie obsługują podstawowy zestaw funkcji, w tym operacje, takie jak Insert, Update, Deletei sortowanie. Kontrolka powiązana z danymi umożliwia odnajdywanie możliwości kontroli źródła danych przez pobieranie skojarzonego widoku źródła danych przy użyciu GetHierarchicalView metody i wykonywania zapytań względem widoku w czasie projektowania lub w czasie wykonywania. HierarchicalDataSourceViewobecnie nie obsługuje InsertUpdate operacji ani Delete .

Uwagi dotyczące implementowania

Po dziedziczeniu z HierarchicalDataSourceViewprogramu należy zastąpić następujący element członkowski: Select().

Konstruktory

HierarchicalDataSourceView()

Inicjuje nowe wystąpienie klasy HierarchicalDataSourceView.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
Select()

Pobiera listę wszystkich elementów danych w widoku.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też