|
在ASP.NET 4中的一個新的控件是QueryExtender。QueryExtender控件是為了簡化LinqDatasource或EntityDataSource控件返回的數(shù)據(jù)過濾而設(shè)計的,它主要是將過濾數(shù)據(jù)的邏輯從數(shù)據(jù)控件中分離出來。使用QueryExtender是十分容易的事,只需要簡單往頁面上增加一個QueryExtender控件,指定其數(shù)據(jù)源是哪個控件并設(shè)置過濾條件就可以了。比如,當(dāng)在頁面中顯示產(chǎn)品的信息時,你可以使用該控件去顯示那些在某個價格范圍的產(chǎn)品,也可以搜索用戶指定名稱的產(chǎn)品。
當(dāng)然,不使用QueryExtender控件的話,LinqDataSource和EntityDataSource也是可以過濾數(shù)據(jù)的。這兩個控件都有一個where的屬性,可以指定過濾數(shù)據(jù)的條件。QueryExtender提供的是一種更簡單的方式去過濾數(shù)據(jù)。本文包含了一系列的例子(可以,在本文最后下載),展示了QueryExtender的強大威力。
首先要注意的是,QueryExtender控件只能配合LinqDataSource和EntityDatasource使用。它不能去過濾SqlDataSource控件的數(shù)據(jù)集。當(dāng)然,使用該控件的話,你必須使用LINQ或者ADO.NET Entity框架。對這兩者的討論已經(jīng)超出本文討論的范圍。簡而言之,LINQ和Entity Framework是微軟的對象關(guān)系映射工具,使用的是LinqDataSource和EntityDataSource兩個控件,它們允許開發(fā)通過ORM的解決方案去訪問數(shù)據(jù)庫。
本文附錄的代碼下載中,提供的例子使用的是ADO.NET Entity框架,并對Northwind數(shù)據(jù)庫中的Products,Categories和Suppliers三張表進行了實體建模。其中數(shù)據(jù)庫文件Northwind.mdf位于網(wǎng)站的App_Data目錄下,App_Code目錄下則有ADO.NET Entity框架的建模文件Northwind.edmx,它定義了對象實體和數(shù)據(jù)庫表之間的關(guān)系。
正如在本文介紹部分所說的,QueryExtender控件是配合LinqDatasource 和EntityDataSource 控件使用的。考察一個頁面,允許用戶輸入一個最小的價格,之后就能顯示小于或等于這個價格的所有產(chǎn)品。這個很容易用如下代碼實現(xiàn): NET技術(shù):ASP.NET 4過濾數(shù)據(jù)新控件QueryExtender,轉(zhuǎn)載需保留來源! 鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。<b>Show All Prices Less Than:</b>
$<ASP:TextBox ID="txtMaxPrice" runat="server"></ASP:TextBox>
<ASP:Button ID="btnDisplayProducts" runat="server" Text="Show Products" />
<ASP:GridView ID="gvProducts" runat="server" DataSourceID="dsProducts" ...>
...
</ASP:GridView> <ASP:EntityDataSource ID="dsProducts" runat="server"
ConnectionString="name=NorthwindEntities"
DefaultContainerName="NorthwindEntities" EnableFlattening="False"
EntitySetName="Products" Where="it.UnitPrice <= @UnitPrice">
<WhereParameters>
<ASP:ControlParameter ControlID="txtMaxPrice" Name="UnitPrice"
PropertyName="Text" Type="Decimal" />
</WhereParameters>
</ASP:EntityDataSource>