Aracılığıyla paylaş


HierarchicalDataSourceView Sınıf

Tanım

Bir denetim için HierarchicalDataSourceControl hiyerarşik veri yapısındaki bir düğüm veya düğüm koleksiyonundaki veri görünümünü temsil eder.

public ref class HierarchicalDataSourceView abstract
public abstract class HierarchicalDataSourceView
type HierarchicalDataSourceView = class
Public MustInherit Class HierarchicalDataSourceView
Devralma
HierarchicalDataSourceView
Türetilmiş

Örnekler

Aşağıdaki kod örneği, hiyerarşik veri depolamadan veri almak için sınıfından HierarchicalDataSourceView bir sınıfın nasıl türetilmiş olduğunu gösterir. Bu örnekte dosya sistemi. FileSystemDataSourceView sınıfı, denetim gibi TreeView hiyerarşik Web sunucusu denetimlerinin bir denetime bağlanmasına ve dosya sistemi bilgilerini görüntülemesine olanak tanıyan kesin olarak belirlenmiş HierarchicalDataSourceView bir FileSystemDataSource örnektir. Güvenlik amacıyla, dosya sistemi bilgileri yalnızca veri kaynağı denetimi localhost, kimliği doğrulanmış bir senaryoda kullanılıyorsa ve yalnızca veri kaynağı denetimini kullanan Web Forms sayfasının bulunduğu sanal dizinle başlıyorsa görüntülenir. Aksi takdirde, viewPath oluşturucuya geçirilen parametre geçerli dosya sistemi yolunu temel alan bir görünüm oluşturmak için kullanılabilir. Bu kod örneği, sınıfı için HierarchicalDataSourceControl sağlanan daha büyük bir örneğin parçasıdır.

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

Açıklamalar

ASP.NET, Web sunucusu denetimlerinin verilere bağlanmasını ve tutarlı bir şekilde sunmayı sağlayan bir veri bağlama mimarisini destekler. Verilere bağlanan web sunucusu denetimleri, veriye bağlı denetimler olarak adlandırılır ve bağlamayı kolaylaştıran sınıflara veri kaynağı denetimleri adı verilir. Veri kaynağı denetimleri herhangi bir veri kaynağını temsil edebilir: dosya, akış, ilişkisel veritabanı, iş nesnesi vb. Veri kaynağı denetimleri, temel alınan verilerin kaynağından veya biçiminden bağımsız olarak verileri veriye bağlı denetimlere tutarlı bir şekilde sunar.

Hiyerarşik verileri temsil eden veri kaynağı denetimleri soyut HierarchicalDataSourceControl sınıftan türetilir. Bir veri kaynağı denetimini, veri kaynağı denetim nesnesinin ve temel alınan verilerde veri kaynağı görünüm nesneleriyle temsil edilen ilişkili görünümlerinin birleşimi olarak düşünebilirsiniz. Hiyerarşik veri kaynağı denetimleri, temsil ettikleri her hiyerarşik veri düzeyi için hiyerarşik veri kaynağı görünümünü destekler. Veri kaynağı görünümleri, bir DataSourceControl denetimle ilişkili nesneler gibi DataSourceView adlandırılmaz, ancak benzersiz hiyerarşik yollarıyla tanımlanır.

Veri kaynağı görünümleri, veri kaynağı denetiminin özelliklerini tanımlar. dahil olmak üzere HierarchicalDataSourceViewtüm veri kaynağı görünüm nesneleri, hiyerarşik bir veri listesini nesne olarak IHierarchicalEnumerable alan yöntemini kullanarak Select temel alınan veri kaynağından veri almayı destekler. Tüm veri kaynağı görünümü nesneleri isteğe bağlı olarak , Update, Deleteve sıralama gibi işlemler de Insertdahil olmak üzere temel bir özellik kümesini destekler. Veriye bağlı denetim, yöntemini kullanarak GetHierarchicalView ilişkili bir veri kaynağı görünümünü alarak ve görünümü tasarım zamanında veya çalışma zamanında sorgulayarak veri kaynağı denetiminin özelliklerini bulabilir. HierarchicalDataSourceViewşu anda veya Update Delete işlemlerini desteklememektedirInsert.

Uygulayanlara Notlar

öğesinden HierarchicalDataSourceViewdevraldığınızda, şu üyeyi geçersiz kılmalısınız: Select().

Oluşturucular

HierarchicalDataSourceView()

HierarchicalDataSourceView sınıfının yeni bir örneğini başlatır.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
Select()

Görünümdeki tüm veri öğelerinin listesini alır.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.