QueryExtender 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
可篩選資料來源中的資料,而不需要資料來源中的明確 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 會使用控制項中輸入的 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 會使用 和 控制項中 TextBoxFrom
TextBoxTo
輸入的值,在從 LinqDataSource 控制項傳回的資料中,搜尋 Products 資料表之 ProductName 和 Supplier.CompanyName 資料行中的值。 元素 ControlParameter 會指定文字方塊控制項,其中包含用來搜尋範圍的最小值和最大值。
MinType和 MaxType 屬性會指定傳回的資料中必須包含最小值和最大值。 此程式碼範例是逐步解說 :使用宣告式語法篩選網頁中資料的大型範例的一部分。
<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 |
取得或設定包含了此控制項之 Page 或 UserControl 物件的相對應用程式虛擬目錄。 (繼承來源 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 |
取得包含目前伺服器控制項的 Page 或 UserControl 的虛擬目錄。 (繼承來源 Control) |
UniqueID |
取得伺服器控制項唯一的、符合階層架構的識別項。 (繼承來源 Control) |
ValidateRequestMode |
取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。 (繼承來源 Control) |
ViewState |
取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。 (繼承來源 Control) |
ViewStateIgnoresCase |
取得值,指出 StateBag 物件是否不區分大小寫。 (繼承來源 Control) |
ViewStateMode |
取得或設定這個控制項的檢視狀態模式。 (繼承來源 Control) |
Visible |
取得或設定值,指出伺服器控制項是否會轉譯為頁面上的 UI。 (繼承來源 Control) |
方法
事件
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) |
傳回包含資料控制項的中繼資料表物件。 |