QueryExtender 類別

定義

可篩選資料來源中的資料,而不需要資料來源中的明確 Where 子句。

public ref class QueryExtender : System::Web::UI::Control
[System.Drawing.ToolboxBitmap(typeof(System.Web.UI.WebControls.QueryExtender), "QueryExtender.bmp")]
public class QueryExtender : System.Web.UI.Control
[<System.Drawing.ToolboxBitmap(typeof(System.Web.UI.WebControls.QueryExtender), "QueryExtender.bmp")>]
type QueryExtender = class
    inherit Control
Public Class QueryExtender
Inherits Control
繼承
QueryExtender
屬性

範例

下列範例示範如何使用 QueryExtender 控制項在網頁中提供搜尋函式。 控制項 QueryExtender 會使用控制項中輸入的 TextBoxSearch 文字,在從控制項傳回 LinqDataSource 的資料中,搜尋 Products 資料表之 ProductName 和 Supplier.CompanyName 資料行中的內容。 物件 SearchExpression 是用來執行搜尋。 屬性 DataFields 會指定要搜尋的資料欄位。 屬性 SearchType 會指定要執行的搜尋類型。 元素 ControlParameter 會指定控制項,其中包含要用於搜尋的文字。 此程式碼範例是逐步解說 :使用宣告式語法篩選網頁數據中較大範例的一部分。

<asp:LinqDataSource ID="dataSource" runat="server"   
    TableName="Products">  
</asp:LinqDataSource>  
<asp:QueryExtender TargetControlID="dataSource" runat="server">  
  <asp:SearchExpression DataFields="ProductName, Supplier.CompanyName"   
        SearchType="StartsWith">  
    <asp:ControlParameter ControlID="TextBoxSearch" />  
  </asp:SearchExpression>  
</asp:QueryExtender>  

下列範例示範如何使用 QueryExtender 控制項來搜尋網頁中的指定範圍中的值。 控制項 QueryExtender 會使用 和 控制項中 TextBoxFromTextBoxTo 輸入的值,在從 LinqDataSource 控制項傳回的資料中,搜尋 Products 資料表之 ProductName 和 Supplier.CompanyName 資料行中的值。 元素 ControlParameter 會指定文字方塊控制項,其中包含用來搜尋範圍的最小值和最大值。 MinTypeMaxType 屬性會指定傳回的資料中必須包含最小值和最大值。 此程式碼範例是逐步解說 :使用宣告式語法篩選網頁中資料的大型範例的一部分。

<asp:LinqDataSource ID="dataSource" runat="server"   
    TableName="Products">  
</asp:LinqDataSource>  
<asp:QueryExtender TargetControlID="dataSource" runat="server">  
  <asp:RangeExpression DataField="UnitPrice" MinType="Inclusive"   
        MaxType="Inclusive">  
    <asp:ControlParameter ControlID="TextBoxFrom" />  
    <asp:ControlParameter ControlID="TexBoxTo" />  
  </asp:RangeExpression>  
</asp:QueryExtender>  

備註

本主題內容:

簡介

控制項 QueryExtender 可用來建立從資料來源擷取之資料的篩選,而不使用資料來源中的明確 Where 子句。 QueryExtender控制項可用來使用宣告式語法來指定篩選。

背景

篩選只會顯示符合指定準則的記錄,以排除資料來源中的資料。 篩選可讓您呈現資料集中資料的不同檢視,而不會影響資料集中的資料。

篩選通常需要建立 Where 子句,以套用至查詢資料來源的命令。 不過, Where 資料來源控制項的 屬性可能不會公開可用的完整功能。 例如,QueryExtender 控制項可讓您在 .data 欄位中的開頭、結尾或任何地方搜尋字串,以查詢資料表。

若要公開 LINQ 中可用的完整功能,並讓篩選資料更容易,ASP.NET 提供 QueryExtender 控制項。 控制項 QueryExtender 具有下列優點:

  • 它提供比撰寫 Where 子句更豐富的篩選體驗。 例如,您可以使用篩選來搜尋 Products 資料表中的布林值 PropertyExpression ,而不需撰寫查詢。

  • 它可讓您針對 和 EntityDataSource 控制項,以及您可能使用的任何其他資料來源控制項使用相同的語法 LinqDataSource 來指定篩選。

  • 它可與控制項、 EntityDataSource 控制項或協力廠商資料來源搭配 LinqDataSource 使用。

篩選選項:

控制項 QueryExtender 支援可用來篩選資料的各種選項。 控制項可讓您搜尋字串、搜尋指定範圍中的數值,以及比較資料表中的屬性值與指定的值。 控制項也可讓您排序資料並提供自訂查詢。

這些選項會在 控制項中 QueryExtender 以 LINQ 運算式的形式提供。 控制項 QueryExtender 也支援 ASP.NET 動態資料應用程式特有的運算式。

下表列出可用來篩選控制項中 QueryExtender 資料的選項。

運算式 描述
ControlFilterExpression (動態資料) 使用源資料繫結控制項中選取的資料索引鍵來建置資料庫查詢。

如需如何使用這個篩選選項的詳細資訊,請參閱 如何:使用動態資料中父資料表的值篩選資料表資料列
CustomExpression 指定資料來源的使用者定義運算式。 您可以在事件處理常式中叫用自訂 LINQ 運算式。
DynamicFilterExpression (動態資料只會) 使用指定的 DynamicFilter 控制項建置資料庫查詢。

如需如何使用這個篩選選項的詳細資訊,請參閱 如何:在動態資料中使用外鍵篩選資料表資料列
MethodExpression 指定資料來源的使用者定義 LINQ 運算式。 運算式會在 方法中叫用。
OrderByExpression 將排序運算式套用至 IQueryable 資料來源物件。 套用 OrderByExpression 值之後,您可以藉由指定 ThenByExpressions 值來套用其他排序作業。
PropertyExpression 比較在集合中指定的 WhereParameters 資料欄位和屬性值的屬性。
RangeExpression 判斷值是否大於或小於指定的值,或值是否介於兩個值之間。
SearchExpression 比較欄位或欄位中的值與指定的字串值。

您可以個別使用這些 QueryExtender 選項,也可以結合這些選項,在網頁中提供複雜的篩選。 如需詳細資訊,請參閱 QueryExtender Web 服務器控制項概觀逐步解說:使用宣告式語法篩選網頁中的資料

工作

下表列出示範如何使用 QueryExtender 控制項來篩選資料的工作。

文件 Task
逐步解說:使用宣告式語法篩選網頁中的資料 示範如何使用控制項所提供的篩選選項 QueryExtender

宣告式語法

<asp:QueryExtender   
    EnableViewState="True|False"  
    ID="string"  
    OnDataBinding="DataBiding event handler"  
    OnDisposed="Disposed event handler"  
    OnInit="Init event handler  
    OnLoad="Load event handler"  
    OnPreRender="PreRender event handler"  
    OnUnload="UnLoad event handler"  
    Runat="server"  
    TargetControlID="string"  
    Visible="True|False"  
>  
        <asp:ControlFilterExpression   
            ControlD="string"  
            Column="string">   
        </asp:ControlFilterExpression>  
        <asp:DynamicFilterExpression  
            ControlD="string"  
        </asp:DynamicFilterExpression>  
        <asp:CustomExpression="string"  
            OnQuerying="OnQuerying event handler">  
        </asp:CustomExpression>  
        <asp:OrderByExpression="string"  
            DataField="string"  
            Direction="string">  
            <asp:ThenByExpression  
                 DataField="string"  
                 Direction="string"  
            </asp:ThenBy>  
        </asp:OrderByExpression>  
        <asp:PropertyExpression="string">  
                <!-- child controls -->  
        </asp:PropertyExpression  
        >  
        <asp:RangeExpression="integer"  
            Datafield="string"  
            MaxType="Exclusive|Inclusive|None"  
            MinType="Exclusive|Inclusive|None">  
                <!--child controls-->  
        </asp:RangeExpression>  
        <asp:SearchExpression="string"  
            ComparisonType="CurrentCulture|CurrentCultureIgnoreCase|  
                InvariantCulture|InvariantCultureIgnoreCase|  
                Ordinal|OrdinalIgnoreCase"  
            DataField="string"  
            SearchType="Contains|EndsWith|StartsWith">  
                <!--child controls-->  
        </asp:SearchExpression>  
</asp:QueryExtender>  

建構函式

QueryExtender()

初始化 QueryExtender 類別的新執行個體。

屬性

Adapter

針對控制項取得瀏覽器的特定配置器。

(繼承來源 Control)
AppRelativeTemplateSourceDirectory

取得或設定包含了此控制項之 PageUserControl 物件的相對應用程式虛擬目錄。

(繼承來源 Control)
BindingContainer

取得包含了此控制項之資料繫結的控制項。

(繼承來源 Control)
ChildControlsCreated

取得值,指出是否已經建立伺服器控制項的子控制項。

(繼承來源 Control)
ClientID

取得 ASP.NET 所產生之 HTML 標記的控制項識別碼。

(繼承來源 Control)
ClientIDMode

取得或設定用來產生 ClientID 屬性值的演算法。

(繼承來源 Control)
ClientIDSeparator

取得字元值,表示在 ClientID 屬性中所使用的分隔字元。

(繼承來源 Control)
Context

取得與目前 Web 要求的伺服器控制項關聯的 HttpContext 物件。

(繼承來源 Control)
Controls

取得 ControlCollection 物件,表示 UI 階層架構中指定之伺服器控制項的子控制項。

(繼承來源 Control)
DataItemContainer

如果命名容器實作 IDataItemContainer,則取得命名容器的參考。

(繼承來源 Control)
DataKeysContainer

如果命名容器實作 IDataKeysControl,則取得命名容器的參考。

(繼承來源 Control)
DataSource

取得要用於查詢的資料來源控制項 (IDataSource 物件)。

DesignMode

取得值,指出控制項是否正用於設計介面上。

(繼承來源 Control)
EnableTheming

取得或設定值,指出佈景主題是否套用至此控制項。

(繼承來源 Control)
EnableViewState

取得或設定值,該值表示伺服器控制項是否對要求的用戶端而言保持其檢視狀態,以及它包含的任何子控制項狀態。

(繼承來源 Control)
Events

取得控制項事件處理常式委派 (Delegate) 的清單。 這個屬性是唯讀的。

(繼承來源 Control)
Expressions

取得套用至 IDataSource 控制項的運算式集合。

HasChildViewState

取得值,指出目前伺服器控制項的子控制項是否有任何已儲存的檢視狀態設定。

(繼承來源 Control)
ID

取得或設定指派給伺服器控制項的程式設計識別項。

(繼承來源 Control)
IdSeparator

取得用來分隔控制項識別項的字元。

(繼承來源 Control)
IsChildControlStateCleared

取得值,指出這個控制項中所包含的控制項是否有控制項狀態。

(繼承來源 Control)
IsTrackingViewState

取得值,指出伺服器控制項是否正在儲存檢視狀態的變更。

(繼承來源 Control)
IsViewStateEnabled

取得值,指出這個控制項是否已啟用檢視狀態。

(繼承來源 Control)
LoadViewStateByID

取得值,指出控制項是否依 ID (而不是索引) 參與載入其檢視狀態。

(繼承來源 Control)
NamingContainer

取得伺服器控制項命名容器的參考,其建立唯一命名空間,在具有相同 ID 屬性值的伺服器控制項之間作區別。

(繼承來源 Control)
Page

取得含有伺服器控制項的 Page 執行個體的參考。

(繼承來源 Control)
Parent

在網頁控制階層架構中取得伺服器控制項之父控制項的參考。

(繼承來源 Control)
RenderingCompatibility

取得值,這個值會指定將與呈現 HTML 相容的 ASP.NET 版本。

(繼承來源 Control)
Site

當呈現在設計介面上時,取得裝載目前控制項之容器的資訊。

(繼承來源 Control)
SkinID

取得或設定要套用至控制項的面板。

(繼承來源 Control)
TargetControlID

取得或設定要用於查詢的 IDataSource 控制項識別碼。

TemplateControl

取得或設定包含了此控制項之樣板的參考。

(繼承來源 Control)
TemplateSourceDirectory

取得包含目前伺服器控制項的 PageUserControl 的虛擬目錄。

(繼承來源 Control)
UniqueID

取得伺服器控制項唯一的、符合階層架構的識別項。

(繼承來源 Control)
ValidateRequestMode

取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。

(繼承來源 Control)
ViewState

取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。

(繼承來源 Control)
ViewStateIgnoresCase

取得值,指出 StateBag 物件是否不區分大小寫。

(繼承來源 Control)
ViewStateMode

取得或設定這個控制項的檢視狀態模式。

(繼承來源 Control)
Visible

取得或設定值,指出伺服器控制項是否會轉譯為頁面上的 UI。

(繼承來源 Control)

方法

AddedControl(Control, Int32)

在子控制項加入 Control 物件的 Controls 集合後呼叫。

(繼承來源 Control)
AddParsedSubObject(Object)

通知伺服器控制項,XML 或 HTML 項目已剖析,並將項目加入伺服器控制項的 ControlCollection 物件中。

(繼承來源 Control)
ApplyStyleSheetSkin(Page)

將頁面樣式表中所定義的樣式屬性套用至控制項。

(繼承來源 Control)
BeginRenderTracing(TextWriter, Object)

開始進行轉譯資料的設計階段追蹤。

(繼承來源 Control)
BuildProfileTree(String, Boolean)

收集伺服器控制項的相關資訊,並在頁面啟用追蹤時將此資訊傳遞至 Trace 屬性以顯示之。

(繼承來源 Control)
ClearCachedClientID()

將快取的 ClientID 值設定為 null

(繼承來源 Control)
ClearChildControlState()

刪除伺服器控制項之子控制項的控制項狀態資訊。

(繼承來源 Control)
ClearChildState()

刪除所有伺服器控制項之子控制項的檢視狀態和控制項狀態資訊。

(繼承來源 Control)
ClearChildViewState()

刪除所有伺服器控制項之子控制項的檢視狀態資訊。

(繼承來源 Control)
ClearEffectiveClientIDMode()

將目前的控制項執行個體和任何子控制項的 ClientIDMode 屬性設定為 Inherit

(繼承來源 Control)
CreateChildControls()

由 ASP.NET 網頁架構呼叫,通知使用組合實作的伺服器控制項來建立所包含的任何子控制項,以準備回傳或呈現。

(繼承來源 Control)
CreateControlCollection()

建立新的 ControlCollection 物件來保存伺服器控制項的子控制項 (常值和伺服器)。

(繼承來源 Control)
DataBind()

將資料來源繫結至所叫用的伺服器控制項及其所有子控制項。

(繼承來源 Control)
DataBind(Boolean)

使用會引發 DataBinding 事件的選項,繫結資料來源至叫用的伺服器控制項及其所有子控制項。

(繼承來源 Control)
DataBindChildren()

繫結資料來源至伺服器控制項的子控制項。

(繼承來源 Control)
Dispose()

啟用伺服器控制項,在它從記憶體釋放之前執行最後清除。

(繼承來源 Control)
EndRenderTracing(TextWriter, Object)

結束轉譯資料的設計階段追蹤。

(繼承來源 Control)
EnsureChildControls()

判斷伺服器控制項是否包含子控制項。 如果不包含,則建立子控制項。

(繼承來源 Control)
EnsureID()

為尚未指定識別項的控制項,建立識別項。

(繼承來源 Control)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
FindControl(String)

在目前命名容器搜尋具有指定 id 參數的伺服器控制項。

(繼承來源 Control)
FindControl(String, Int32)

使用指定的 id 和有助於搜尋之 pathOffset 參數中所指定的整數,在目前的命名容器中搜尋伺服器控制項。 您不應該覆寫這個版本的 FindControl 方法。

(繼承來源 Control)
Focus()

設定控制項的輸入焦點。

(繼承來源 Control)
GetDesignModeState()

取得控制項的設計階段資料。

(繼承來源 Control)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetRouteUrl(Object)

取得會對應於一組路由參數的 URL。

(繼承來源 Control)
GetRouteUrl(RouteValueDictionary)

取得會對應於一組路由參數的 URL。

(繼承來源 Control)
GetRouteUrl(String, Object)

取得 URL,此 URL 對應於一組路由參數及一個路由名稱。

(繼承來源 Control)
GetRouteUrl(String, RouteValueDictionary)

取得 URL,此 URL 對應於一組路由參數及一個路由名稱。

(繼承來源 Control)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
GetUniqueIDRelativeTo(Control)

傳回指定之控制項 UniqueID 屬性的前置部分。

(繼承來源 Control)
HasControls()

判斷伺服器控制項是否包含任何子控制項。

(繼承來源 Control)
HasEvents()

傳回值,指出控制項或任何子控制項的事件是否已註冊。

(繼承來源 Control)
IsLiteralContent()

判斷伺服器控制項是否只儲存常值內容。

(繼承來源 Control)
LoadControlState(Object)

SaveControlState() 方法所儲存的上一頁要求中,還原控制項狀態資訊。

(繼承來源 Control)
LoadViewState(Object)

載入 QueryExtender 控制項中必須保存的值狀態。

MapPathSecure(String)

擷取虛擬絕對路徑或相對路徑所對應至的實體路徑。

(繼承來源 Control)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnBubbleEvent(Object, EventArgs)

決定伺服器控制項的事件是否要在頁面的 UI 伺服器控制項階層架構中向上傳遞。

(繼承來源 Control)
OnDataBinding(EventArgs)

引發 DataBinding 事件。

(繼承來源 Control)
OnInit(EventArgs)

初始化 QueryExtender 類別的新執行個體時發生。

OnLoad(EventArgs)

引發 Load 事件。

(繼承來源 Control)
OnPreRender(EventArgs)

引發 PreRender 事件。

(繼承來源 Control)
OnUnload(EventArgs)

引發 Unload 事件。

(繼承來源 Control)
OpenFile(String)

取得用來讀取檔案的 Stream

(繼承來源 Control)
RaiseBubbleEvent(Object, EventArgs)

指派事件的任何來源和它的資訊至控制項的父控制項。

(繼承來源 Control)
RemovedControl(Control)

Control 物件的 Controls 集合中移除子控制項之後呼叫。

(繼承來源 Control)
Render(HtmlTextWriter)

將伺服器控制項內容傳送到提供的 HtmlTextWriter 物件,以寫入要在用戶端上呈現的內容。

(繼承來源 Control)
RenderChildren(HtmlTextWriter)

將伺服器控制項子系的內容輸出至提供的 HtmlTextWriter 物件,再由這個物件在用戶端上寫入要轉譯的內容。

(繼承來源 Control)
RenderControl(HtmlTextWriter)

將伺服器控制項內容輸出至提供的 HtmlTextWriter 物件,並在啟用追蹤時儲存控制項的追蹤資訊。

(繼承來源 Control)
RenderControl(HtmlTextWriter, ControlAdapter)

使用提供的 HtmlTextWriter 物件,輸出伺服器控制項內容至提供的 ControlAdapter 物件。

(繼承來源 Control)
ResolveAdapter()

取得負責呈現指定之控制項的控制項配置器。

(繼承來源 Control)
ResolveClientUrl(String)

取得瀏覽器可使用的 URL。

(繼承來源 Control)
ResolveUrl(String)

將 URL 轉換為要求用戶端可使用的 URL。

(繼承來源 Control)
SaveControlState()

儲存頁面回傳至伺服器以來,所發生的任何伺服器控制項狀態變更。

(繼承來源 Control)
SaveViewState()

儲存 QueryExtender 控制項的目前檢視狀態。

SetDesignModeState(IDictionary)

設定控制項的設計階段資料。

(繼承來源 Control)
SetRenderMethodDelegate(RenderMethod)

指定事件處理常式委派,以呈現伺服器控制項及其內容至其父控制項。

(繼承來源 Control)
SetTraceData(Object, Object)

使用追蹤資料機碼和追蹤資料值,設定設計階段期間追蹤呈現資料的追蹤資料。

(繼承來源 Control)
SetTraceData(Object, Object, Object)

使用追蹤的物體、追蹤資料機碼和追蹤資料值,設定設計階段期間追蹤呈現資料的追蹤資料。

(繼承來源 Control)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
TrackViewState()

追蹤 QueryExtender 控制項的檢視狀態變更,以將變更儲存於控制項的 StateBag 物件中。

事件

DataBinding

發生於伺服器控制項繫結至資料來源時。

(繼承來源 Control)
Disposed

發生於伺服器控制項從記憶體釋放時,這是在要求 ASP.NET 網頁時,伺服器控制項生命週期的最後階段。

(繼承來源 Control)
Init

發生於初始化伺服器控制項時,是其生命週期中的第一個步驟。

(繼承來源 Control)
Load

發生於載入伺服器控制項至 Page 物件時。

(繼承來源 Control)
PreRender

Control 物件載入之後但在呈現之前發生。

(繼承來源 Control)
Unload

發生於伺服器控制項從記憶體卸載時。

(繼承來源 Control)

明確介面實作

IControlBuilderAccessor.ControlBuilder

如需這個成員的說明,請參閱 ControlBuilder

(繼承來源 Control)
IControlDesignerAccessor.GetDesignModeState()

如需這個成員的說明,請參閱 GetDesignModeState()

(繼承來源 Control)
IControlDesignerAccessor.SetDesignModeState(IDictionary)

如需這個成員的說明,請參閱 SetDesignModeState(IDictionary)

(繼承來源 Control)
IControlDesignerAccessor.SetOwnerControl(Control)

如需這個成員的說明,請參閱 SetOwnerControl(Control)

(繼承來源 Control)
IControlDesignerAccessor.UserData

如需這個成員的說明,請參閱 UserData

(繼承來源 Control)
IDataBindingsAccessor.DataBindings

如需這個成員的說明,請參閱 DataBindings

(繼承來源 Control)
IDataBindingsAccessor.HasDataBindings

如需這個成員的說明,請參閱 HasDataBindings

(繼承來源 Control)
IExpressionsAccessor.Expressions

如需這個成員的說明,請參閱 Expressions

(繼承來源 Control)
IExpressionsAccessor.HasExpressions

如需這個成員的說明,請參閱 HasExpressions

(繼承來源 Control)
IParserAccessor.AddParsedSubObject(Object)

如需這個成員的說明,請參閱 AddParsedSubObject(Object)

(繼承來源 Control)

擴充方法

FindDataSourceControl(Control)

傳回與指定之控制項的資料控制項相關聯的資料來源。

FindFieldTemplate(Control, String)

傳回在指定之控制項的命名容器中所指定資料行的欄位樣板。

FindMetaTable(Control)

傳回包含資料控制項的中繼資料表物件。

適用於

另請參閱