This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

HierarchicalDataSourceControl الفئة

Visual Studio 2010

توفر فئة أساسية للبيانات المصدر عناصر التحكم التي تمثل بيانات الهرمية.

مساحة الاسم:  System.Web.UI
التجميع:  System.Web (في System.Web.dll)

[BindableAttribute(false)]
public abstract class HierarchicalDataSourceControl : Control, 
	IHierarchicalDataSource
<asp:HierarchicalDataSourceControl />

يدعم ASP.NET بنية data-يربطing عناصر تحكم من عناصر تحكم الخادم ويب إلى يربط للبيانات وتقديمها بطريقة متناسقة. تسمى عناصر تحكم الخادم ويب قم بحدود بيانات عناصر تحكم حدود البيانات، وتسمى الفئات التي تسهل حدود البيانات المصدر عناصر التحكم. مصدر بيانات عناصر التحكم يمكن أن يمثل أي مصدر بيانات: ملف دفق، قاعدة بيانات علائقية، كائن الأعمال وهكذا. مصدر بيانات عناصر التحكم عرض بيانات بشكل متناسق لحدود بيانات عناصر التحكم، بغض النظر عن المصدر أو تنسيق بيانات المصدر.

عناصر تحكم مصدر البيانات التي تمثل بيانات هرمية ينحدر من HierarchicalDataSourceControlلفئة، بينما يتم اشتقاق عناصر تحكم مصدر البيانات التي تمثل القوائم أو جداول البيانات من DataSourceControlفئة. HierarchicalDataSourceControl الفئة هو تطبيق القاعدة IHierarchicalDataSourceالواجهة، والذي يقوم بتعريف أسلوب مفرد لاسترداد البيانات الهرمية مصدر عرض الكائنات المقترنة بعنصر تحكم مصدر البيانات، GetHierarchicalView.

يمكنك اعتبار عنصر تحكم مصدر بيانات كـ التركيبة HierarchicalDataSourceControlالكائن وطرق كـ sociated على البيانات الأساسية، تسمى بيانات المصدر عرض الكائنات. بينما عنصر تحكم s تمثل جدولي لمصدر البيانات البيانات تقترن عادة بالعرض المسمى واحد، HierarchicalDataSourceControlفئة تعتمد طريقة عرض مصدر بيانات لكل المستوى من التسلسل الهرمي للبيانات التي مصدر البيانات عنصر تحكم يمثل. The المستوى of هرمى بيانات هو identified بواسطة a فريد هرمى مسار, passed إلى the GetHierarchicalView أسلوب في the viewPath معلمة. كل HierarchicalDataSourceViewيعرف قدرات عنصر تحكم مصدر البيانات لمستوى التسلسل الهرمي تمثيل كائن، وتنفيذ العمليات مثل كـ إدراج وتحديث، حذفها والفرز.

ويب server controls that derive من the HierarchicalDataBoundControl class, such as TreeView, استخدم هرمى بيانات source controls to يربط to هرمى بيانات.

مصدر بيانات عناصر التحكم يتم تنفيذها ك عناصر التحكم لتمكين استمرارية مصرحة والسماح بالمشاركة في إدارة الحالة بشكل اختياري. بيانات المصدر العرض المرئي لا تحتوي عناصر التحكم، ولذلك لا تعتمد السمات.

يوضح المثال التعليمات البرمجية التالي كيفية توسيع مجردة HierarchicalDataSourceControlفئة و HierarchicalDataSourceViewللفئات، وتنفيذها IHierarchicalEnumerableو IHierarchyDataالواجهات لإنشاء قرص بيانات هرمية عنصر تحكم يقوم باسترداد ملف مصدر معلومات النظام. FileSystemDataSourceعنصر التحكم من عناصر تحكم ملقم ويب لربط FileSystemInfoالكائنات وعرض أساسي ملف نظام المعلومات. The FileSystemDataSource فئة في the مثال provides the implementation of the GetHierarchicalView أسلوب, which retrieves a FileSystemDataSourceView كائن. FileSystemDataSourceViewكائن استرداد البيانات من مخزن البيانات الأساسية، في هذه الحالة نظام الملفات المعلومات الموجودة على ملقم ويب. ولأغراض الأمان، يتم عرض ملف معلومات النظام فقط إذا كانت البيانات المصدر استخدام عنصر التحكم بالمضيف المحلي، السيناريو مصادق عليه، ويبدأ فقط بالدليل الظاهري الذي نماذج الويب الصفحة باستخدام البيانات المصدر عنصر تحكم موجود في. Finally, الثاني فئات that implement IHierarchicalEnumerable و IHierarchyData are provided إلى التفاف the FileSystemInfo الكائنات that FileSystemDataSource uses.


using System;
using System.Collections;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public class FileSystemDataSource :
    HierarchicalDataSourceControl, IHierarchicalDataSource
{
    private FileSystemDataSourceView view = null;

    public FileSystemDataSource() : base() { }

    protected override HierarchicalDataSourceView
        GetHierarchicalView(string viewPath)
    {
        view = new FileSystemDataSourceView(viewPath);
        return view;
    }
}
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.");
        }
    }
}
// A collection of FileSystemHierarchyData objects
public class FileSystemHierarchicalEnumerable :
    ArrayList, IHierarchicalEnumerable
{
    public FileSystemHierarchicalEnumerable()
        : base()
    {
    }

    public IHierarchyData GetHierarchyData(object enumeratedItem)
    {
        return enumeratedItem as IHierarchyData;
    }
}

public class FileSystemHierarchyData : IHierarchyData
{
    private FileSystemInfo fileSystemObject = null;

    public FileSystemHierarchyData(FileSystemInfo obj)
    {
        fileSystemObject = obj;
    }

    public override string ToString()
    {
        return fileSystemObject.Name;
    }
    // IHierarchyData implementation.
    public bool HasChildren
    {
        get
        {
            if (typeof(DirectoryInfo) == fileSystemObject.GetType())
            {
                DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
                return (temp.GetFileSystemInfos().Length > 0);
            }
            else return false;
        }
    }
    // DirectoryInfo returns the OriginalPath, while FileInfo returns
    // a fully qualified path.
    public string Path
    {
        get
        {
            return fileSystemObject.ToString();
        }
    }
    public object Item
    {
        get
        {
            return fileSystemObject;
        }
    }
    public string Type
    {
        get
        {
            return "FileSystemData";
        }
    }
    public IHierarchicalEnumerable GetChildren()
    {
        FileSystemHierarchicalEnumerable children =
            new FileSystemHierarchicalEnumerable();

        if (typeof(DirectoryInfo) == fileSystemObject.GetType())
        {
            DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
            foreach (FileSystemInfo fsi in temp.GetFileSystemInfos())
            {
                children.Add(new FileSystemHierarchyData(fsi));
            }
        }
        return children;
    }

    public IHierarchyData GetParent()
    {
        FileSystemHierarchicalEnumerable parentContainer =
            new FileSystemHierarchicalEnumerable();

        if (typeof(DirectoryInfo) == fileSystemObject.GetType())
        {
            DirectoryInfo temp = (DirectoryInfo)fileSystemObject;
            return new FileSystemHierarchyData(temp.Parent);
        }
        else if (typeof(FileInfo) == fileSystemObject.GetType())
        {
            FileInfo temp = (FileInfo)fileSystemObject;
            return new FileSystemHierarchyData(temp.Directory);
        }
        // If FileSystemObj is any other kind of FileSystemInfo, ignore it.
        return null;
    }
}


The following تعليمات برمجية مثال demonstrates how إلى declaratively يربط a TreeView عنصر تحكم إلى ملف النظام بيانات using the FileSystemDataSource مثال.


<%@ Page Language="C#" %>
<%@ Register Tagprefix="aspSample" Namespace="Samples.AspNet" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">

            <asp:treeview
                id="TreeView1"
                runat="server"
                datasourceid="FileSystemDataSource1" />            

            <aspSample:filesystemdatasource
                id = "FileSystemDataSource1"
                runat = "server" />            

        </form>
    </body>
</html>


يتم تأمين العملية الجزئية لأي عضو عمومي ثابت (مشترك في Visual Basic) من هذا النوع. لن يتم ضمان تأمين العملية الجزئية لأي عضو مثيل.

نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, الإصدار x64 من نظام التشغيل Windows XP Professional, Windows XP Starter Edition, Windows Server 2008, نظام التشغيل Windows Server 2003, نظام التشغيل Windows Server 2000 المزود بحزمة الخدمة SP4, نظام التشغيل Windows Millennium Edition, نظام التشغيل Windows 98

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5, 3.0, 2.0
إظهار: