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.

DynamicFilter الفئة

Visual Studio 2010

تعرض واجه المستخدم لتصفية صفوف الجدول باستخدام عمود محدد.

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

public class DynamicFilter : Control
<asp:DynamicFilter />

في هذا الموضوع:

مقدمة

DynamicFilter عنصر التحكم هو المستخدم في علامات صفحة لإنشاء واجهة المستخدم لتصفية صفوف الجدول. إنشاء بيانات ديناميكية واجه المستخدم باستخدام قوالب عامل تصفية افتراضي في المجلد~\DynamicData\Filters. تعتمد هذه القوالب المفتاح الخارجي، وقيمة منطقية، وتعداد عمود أنواع.

يلي جدول تظهر بعض المهام التي يمكن تنفيذها.

السيناريو

الوصف

قم بتحديد العمود إلى استخدامها لتصفية الصفوف في الجدول.

استخدم خاصية DataFieldلتحديد العمود إلى استخدم لتصفية الصفوف في جدول.

حدد اسم عامل تصفية قالب استخدام لإنشاء واجهة المستخدم.

استخدام خاصية FilterUIHintلتحديد اسم عامل تصفية قالب استخدام لإنشاء واجهة المستخدم.

إجراء العمليات مخصص من قبل واجهة المستخدم هو تقديمها.

استخدام FilterChangedلإجراء العمليات مخصص من قبل واجهة المستخدم هو تقديم.

يمكنك تحديد عامل تصفية قالب استخدام الطرق التالية:

  • باستخدام FilterUIHintخاصية في الصفحة ترميز. يعتبر هذا الأسلوب هو تخصيص طبقة العرض تقديمي، والتي مستقلة عن المخطط (قاعدة بيانات)، والتي يطبق على صفحة واحدة.

  • بواسطة استخدام FilterUIHintAttributeسمة في الطراز. يعتبر هذا الأسلوب هو cusإلىmization طبقة بيانات، التي تعتمد تشغيل مخطط محدد (قاعدة بيانات)، والذي يطبق إلى تطبيق بالكامل.

إذا قمت باستخدام كل من الطرق، عامل تصفية قالب الذي تم تحديده في العلامات يأخذ الأسبقية على قالب الذي تم تحديده في نموذج بيانات.

فئة سياق

The DynamicFilter عنصر تحكم هو designed إلى work مع the QueryExtender عنصر تحكم. DynamicFilter عنصر تحكم المشار إليها من قبل DynamicFilterExpressionمثيل داخل QueryExtenderالكائن في علامات الصفحة.

يظهر الشكل التالي الخطوات أن يتبع "بيانات الديناميكية" في ترتيب إلى تنفيذ صف جدول التصفية حسب عمود المفتاح الخارجي.

عناصر استعلام البيانات الديناميكية
  1. DynamicFilter عنصر تحكم تمرير القيمة المختارة QueryExtenderعنصر تحكم.

  2. QueryExtender عنصر تحكم يستخدم القيمة لإنشاء استعلام تصفية المعلومات. من ثم يقوم بتمرير هذه المعلومات إلى بيانات المصدر عنصر التحكم.

  3. عنصر تحكم مصدر بيانات يقوم بتمرير معلومات استعلام التصفية إلى موفر مصدر بيانات.

  4. The مصدر البيانات موفر passes the استعلام إلى the قاعدة بيانات.

  5. The قاعدة بيانات إرجاع the filtered جدول صفوف.

  6. The بيانات المصدر موفر sends this بيانات الخلف إلى the بيانات التحكم بالمصادر.

  7. عنصر تحكم مصدر بيانات بتمرير صفوف الجدول الذي تم تصفيته إلى عنصر تحكم حدود بيانات للعرض.

بناء جملة مصرحة

<asp:DynamicFilter
    ID="Control ID"
    DataField="Name of the data field to use for filtering"
    EnableViewState="True|False" 
    FilterUIHint="Name of the filter template to generate the UI"
    OnFilterChanged="Filter changed event handler"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnUnload="Unload event handler" 
    Visible="True|False"
    runat="server"/>

يتوفر مشروع ‏‫Visual Studio مع التعليمات البرمجية الخاصة بالمصدر في هذا الموقع : ينزّل.

تظهر الأمثلة التالية باستخدام القالب الافتراضي ForeignKey.ascx عامل تصفية لإنشاء واجهة المستخدم لتصفية صفوف جدول المنتجات حسب عمود المفتاح الخارجي ProductCategory. عندما يقوم مستخدم بتحديد قيمة ProductCategory، يتم عرض فقط صفوف التي تحتوي على تلك القيمة.

The مثال يتطلب the following:

  • موقع ويب ديناميكي للبيانات أو تطبيق ويب ديناميكي للبيانات. وهذا يتيح لك إلى إنشاء AdventureWorksLTDataContextسياق بيانات لقاعدة بيانات و إلى إنشاء فئات للجداول إلى الوصول. لمزيد من المعلومات، راجع Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.


<%@ Page Language="C#" MasterPageFile="~/Site.master" 
    CodeFile="DynamicFilter.aspx.cs" Inherits="ForeignKeyFilter" %>

<%@ Register src="~/DynamicData/Content/GridViewPager.ascx" tagname="GridViewPager" tagprefix="asp" %>

<asp:Content ID="headContent" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <asp:DynamicDataManager ID="DynamicDataManager1" runat="server" AutoLoadForeignKeys="true" />

    <h2 class="DDSubHeader"><%= table.DisplayName%> ForeignKey filter</h2>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:ValidationSummary ID="ValidationSummary1" runat="server" 
                EnableClientScript="true"
                HeaderText="List of validation errors" />
            <asp:DynamicValidator runat="server" ID="GridViewValidator" 
                ControlToValidate="GridView1" Display="None" />

            <!-- Show that the filter selection 
                is retained after a post-back -->
            <asp:Button ID="Button1" runat="server" Text="Cause Postback" /> &nbsp; &nbsp;
            <span></span>The filter selection is retained after a postback.</span> 

            <br />

            <!-- Set the DynamicFilter control attributes. --> 
            Select Category: <asp:DynamicFilter runat="server" ID="CategoryFilter" 
            DataField="ProductCategory" FilterUIHint="ForeignKey" 
            OnFilterChanged="OnFilterSelectedIndexChanged" /><br />

            <!-- Data-bound control that shows the filtered table rows. -->
            <asp:GridView ID="GridView1" runat="server" DataSourceID="GridDataSource" 
                EnablePersistedSelection="true" PageSize="5" 
                AllowPaging="True" AllowSorting="True" CssClass="DDGridView">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:LinkButton ID="DeleteLinkButton" runat="server" CommandName="Delete"
                                CausesValidation="true" Text="Delete"
                                OnClientClick='return confirm("Are you sure you want to delete this item?");'
                            />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

                <PagerStyle CssClass="footer"/>        
                <PagerTemplate>
                    <asp:GridViewPager runat="server" />
                </PagerTemplate>
                <EmptyDataTemplate>
                    There are currently no items in this table.
                </EmptyDataTemplate>
            </asp:GridView>

            <!-- The provider that connects to the database -->
            <asp:LinqDataSource ID="GridDataSource" runat="server" 
                EnableDelete="true" 
                ContextTypeName="AdventureWorksLTDataContext"
                TableName="Products">
            </asp:LinqDataSource>

            <!-- The control that handles the details for querying 
            the database, after a user's filtering action -->
            <asp:QueryExtender ID="QueryBlock1" TargetControlID="GridDataSource" 
                runat="server">
                <asp:DynamicFilterExpression ControlID="CategoryFilter" />
            </asp:QueryExtender>

        </ContentTemplate>
    </asp:UpdatePanel>

</asp:Content>



using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Web.DynamicData;


    public partial class ForeignKeyFilter : System.Web.UI.Page {
        protected MetaTable table;

        protected void Page_Init(object sender, EventArgs e) {
            DynamicDataManager1.RegisterControl(GridView1, 
                true /* setSelectionFromUrl */);
        }

        protected void Page_Load(object sender, EventArgs e) {
            table = GridDataSource.GetTable();
            Title = table.DisplayName;

            // Disable various options if the table is readonly
            if (table.IsReadOnly) {
                GridView1.Columns[0].Visible = false;
            }
        }


        // Handle the filter change event.
        protected void OnFilterSelectedIndexChanged(object sender, EventArgs e) {
            // Reset the index of the page to display after 
            // the data filter value has been changed.
            GridView1.PageIndex = 0;

        }

    }


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

نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, نظام التشغيل Windows Server 2003

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

.NET Framework

مدعوم في: 4
إظهار: