CustomExpression Class (System.Web.UI.WebControls.Expressions)

Switch View :
ScriptFree
.NET Framework Class Library
CustomExpression Class

Provides a way to specify a custom LINQ query that is called in response to an event.

Inheritance Hierarchy

System.Object
  System.Web.UI.WebControls.Expressions.DataSourceExpression
    System.Web.UI.WebControls.Expressions.ParameterDataSourceExpression
      System.Web.UI.WebControls.Expressions.CustomExpression

Namespace:  System.Web.UI.WebControls.Expressions
Assembly:  System.Web.Extensions (in System.Web.Extensions.dll)
Syntax

Visual Basic
Public Class CustomExpression _
	Inherits ParameterDataSourceExpression
C#
public class CustomExpression : ParameterDataSourceExpression
Visual C++
public ref class CustomExpression : public ParameterDataSourceExpression
F#
type CustomExpression =  
    class
        inherit ParameterDataSourceExpression
    end

The CustomExpression type exposes the following members.

Constructors

  Name Description
Public method CustomExpression Initializes a new instance of the CustomExpression class.
Top
Properties

  Name Description
Protected property Context Gets the HttpContext instance of the owner control. (Inherited from DataSourceExpression.)
Public property DataSource Gets the data source object that is associated with the owner control. (Inherited from DataSourceExpression.)
Protected property IsTrackingViewState Gets a value that indicates whether a data source expression object is tracking its view state changes. (Inherited from DataSourceExpression.)
Protected property Owner Gets the owner control. (Inherited from DataSourceExpression.)
Public property Parameters Gets the parameters that are associated with this DataSourceExpression object. (Inherited from ParameterDataSourceExpression.)
Protected property ViewState Gets an instance of the StateBag class that contains the current view state information. (Inherited from DataSourceExpression.)
Top
Methods

  Name Description
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetQueryable Provides access to the modified IQueryable object that the data source uses. (Overrides DataSourceExpression.GetQueryable(IQueryable).)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method LoadViewState Loads the state of the values in the ParameterDataSourceExpression object that must be persisted. (Inherited from ParameterDataSourceExpression.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method SaveViewState Saves the current view state of the ParameterDataSourceExpression object. (Inherited from ParameterDataSourceExpression.)
Public method SetContext Executes the expression by using the specified owner control, context, and data source. (Inherited from ParameterDataSourceExpression.)
Public method SetDirty Marks the DataSourceExpression object so that its state will be saved in view state. (Inherited from DataSourceExpression.)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Protected method TrackViewState Tracks view-state changes of the ParameterDataSourceExpression object so that the changes can be stored in the StateBag object for the object. (Inherited from ParameterDataSourceExpression.)
Top
Events

  Name Description
Public event Querying Occurs when the IQueryable data source value is set.
Top
Explicit Interface Implementations

  Name Description
Explicit interface implemetation Private property IStateManager.IsTrackingViewState When implemented by a class, gets a value that indicates whether a data source expression object is tracking its view state changes. (Inherited from DataSourceExpression.)
Explicit interface implemetation Private method IStateManager.LoadViewState When implemented by a class, loads the previously saved view state of the data source expression object. (Inherited from DataSourceExpression.)
Explicit interface implemetation Private method IStateManager.SaveViewState When implemented by a class, saves the current view state of the DataSourceExpression object. (Inherited from DataSourceExpression.)
Explicit interface implemetation Private method IStateManager.TrackViewState When implemented by a class, tracks view state changes of the DataSourceExpression object so that the changes can be stored in the StateBag object for the data source expression object. (Inherited from DataSourceExpression.)
Top
Remarks

The CustomExpression class is used with the QueryExtender control. The QueryExtender control supports a variety of options that you can use to filter data. The QueryExtender control supports filters that let you search strings, search values between a specified range, compare a property value in a table to a specified value, and sort data. These options are provided as LINQ expressions in the QueryExtender control. You can use these filter expressions or you can provide a custom expression that you can use in the QueryExtender control. The CustomExpression class enables you to specify a custom expression in your application and call it in an event handler.

Note Note

You can provide a custom query that is called by a method instead of an event handler by using the MethodExpression class.

Examples

The following example shows how to create a CustomExpression object that is used by the QueryExtender control. The custom expression calls the FilterProducts method, which contains a custom LINQ expression. The result of the filtering operation is displayed in a GridView control.


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Custom Filter</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        ContextTypeName="AdventureWorksDataContext" EntityTypeName="" 
        TableName="Products">
    </asp:LinqDataSource>

    <asp:QueryExtender ID="QueryExtender1" runat="server" TargetControlID="LinqDataSource1">
        <asp:CustomExpression OnQuerying="FilterProducts"></asp:CustomExpression>
    </asp:QueryExtender>

    <asp:GridView ID="GridView1" runat="server"  
        DataSourceID="LinqDataSource1"   
        DataKeyNames="ProductID"  AllowPaging="True">
    </asp:GridView>
    </form>
</body>
</html>


The following example shows an event handler that contains a custom LINQ query. The expression filters the Product table in the AdventureWorks database and displays products that have a list price greater than or equal to $3,500.00.

Visual Basic

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.Expressions
Imports System.Data.Linq

Partial Class CustomVB
    Inherits System.Web.UI.Page

    Protected Sub FilterProducts(ByVal sender As Object, ByVal e As CustomExpressionEventArgs)
        e.Query = From p In e.Query.Cast(Of Product)() _
            Where p.ListPrice >= 3500 _
            Select p
    End Sub






C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.Expressions;
using System.Linq;

public partial class _Default : System.Web.UI.Page 
{
    protected void FilterProducts(object sender, CustomExpressionEventArgs e)
    {
        e.Query = from p in e.Query.Cast<Product>()
                  where p.ListPrice >= 3500
                  select p;
    }
}



Version Information

.NET Framework

Supported in: 4
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
See Also

Reference

Other Resources