|
在ASP.NET 4中的一個新的控件是QueryExtender。QueryExtender控件是為了簡化LinqDatasource或EntityDataSource控件返回的數據過濾而設計的,它主要是將過濾數據的邏輯從數據控件中分離出來。使用QueryExtender是十分容易的事,只需要簡單往頁面上增加一個QueryExtender控件,指定其數據源是哪個控件并設置過濾條件就可以了。比如,當在頁面中顯示產品的信息時,你可以使用該控件去顯示那些在某個價格范圍的產品,也可以搜索用戶指定名稱的產品。
當然,不使用QueryExtender控件的話,LinqDataSource和EntityDataSource也是可以過濾數據的。這兩個控件都有一個where的屬性,可以指定過濾數據的條件。QueryExtender提供的是一種更簡單的方式去過濾數據。本文包含了一系列的例子(可以,在本文最后下載),展示了QueryExtender的強大威力。
首先要注意的是,QueryExtender控件只能配合LinqDataSource和EntityDatasource使用。它不能去過濾SqlDataSource控件的數據集。當然,使用該控件的話,你必須使用LINQ或者ADO.NET Entity框架。對這兩者的討論已經超出本文討論的范圍。簡而言之,LINQ和Entity Framework是微軟的對象關系映射工具,使用的是LinqDataSource和EntityDataSource兩個控件,它們允許開發通過ORM的解決方案去訪問數據庫。
本文附錄的代碼下載中,提供的例子使用的是ADO.NET Entity框架,并對Northwind數據庫中的Products,Categories和Suppliers三張表進行了實體建模。其中數據庫文件Northwind.mdf位于網站的App_Data目錄下,App_Code目錄下則有ADO.NET Entity框架的建模文件Northwind.edmx,它定義了對象實體和數據庫表之間的關系。
正如在本文介紹部分所說的,QueryExtender控件是配合LinqDatasource 和EntityDataSource 控件使用的。考察一個頁面,允許用戶輸入一個最小的價格,之后就能顯示小于或等于這個價格的所有產品。這個很容易用如下代碼實現: NET技術:ASP.NET 4過濾數據新控件QueryExtender,轉載需保留來源! 鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。<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>