QueryExtender控件之CustomExpression

本文部分摘自《ASP.NET4权威指南》
如果上面的表达式类都不能够满足你的要求,那么你可以通过CustomExpression类来提供可用于QueryExtender控件中的自定义 LINQ 表达式。CustomExpression 类使你能够在应用程序中指定自定义表达式,然后在事件处理程序中调用它。
下面的示例演示了如何创建一个由 QueryExtender 控件使用的 CustomExpression 对象。其中,该自定义表达式调用包含自定义 LINQ 表达式的 QueryEmployees方法。筛选操作的结果显示在 GridView 控件中。如代码清单10-7所示:
代码清单10-7:CustomExpressionTest.aspx

Code:
  1. <form id="form1" runat="server">   
  2. <asp:LinqDataSource ID="LinqDataSource1"    
  3. TableName="Employees" runat="server"  
  4.  ContextTypeName="_10_2.EmployeesDataContext"  
  5.  EntityTypeName="" Select="new (employeeid, employeename,   
  6.  department, address, email, workdate)">   
  7. </asp:LinqDataSource>   
  8. <asp:QueryExtender ID="QueryExtender1" runat="server"  
  9.  TargetControlID="LinqDataSource1">   
  10.     <asp:CustomExpression OnQuerying="QueryEmployees">   
  11.     </asp:CustomExpression>   
  12. </asp:QueryExtender>   
  13. <asp:GridView ID="GridView1" runat="server" Width="100%"  
  14.  DataSourceID="LinqDataSource1"  
  15.   AllowPaging="True" AutoGenerateColumns="False"    
  16. DataKeyNames="employeeid">   
  17.     <Columns>   
  18.         <asp:BoundField DataField="employeeid" HeaderText="编号"  
  19.  ReadOnly="True" SortExpression="employeeid" />   
  20.         <asp:BoundField DataField="employeename" HeaderText="姓名"  
  21.  SortExpression="employeename" />   
  22.         <asp:BoundField DataField="department" HeaderText="部门"  
  23.  SortExpression="department" />   
  24.         <asp:BoundField DataField="address" HeaderText="住址"  
  25.  SortExpression="address" />   
  26.         <asp:BoundField DataField="email" HeaderText="邮箱"    
  27. SortExpression="email" />   
  28.         <asp:BoundField DataField="workdate" HeaderText="工作时间"  
  29.  SortExpression="workdate" />   
  30.     </Columns>   
  31. </asp:GridView>   
  32. </form>  
在上面的代码中,通过CustomExpression对象的OnQuerying属性指定了自定义 LINQ 表达式的 QueryEmployees方法。其中,后台的自定义 LINQ 查询的事件处理程序QueryEmployees代码如下所示:

 

CustomExpression对象的OnQuerying属性指定了自定义 LINQ 表达式的 QueryEmployees方法。其中,后台的自定义 LINQ 查询的事件处理程序QueryEmployees代码如下所示:
Code:
  1. protected void QueryEmployees(object sender,   
  2.  CustomExpressionEventArgs e)   
  3. {   
  4.     e.Query = from p in e.Query.Cast<Employee>()   
  5.                 where p.employeeid >= 5   
  6.                 select p;   
  7. }    
 示例运行结果图10-26所示:
图10-26:示例运行结果
本文部分摘自《ASP.NET4权威指南》

 

在上面的代码中,通过
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值