|
在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>