Export (0) Print
Expand All

DynamicRouteExpression Class

Gets the primary key from the routing information in order to perform data filtering.

Namespace:  System.Web.DynamicData
Assembly:  System.Web.DynamicData (in System.Web.DynamicData.dll)

public class DynamicRouteExpression : DataSourceExpression

The DynamicRouteExpression type exposes the following members.

  NameDescription
Public methodDynamicRouteExpressionInitializes a new instance of the DynamicRouteExpression class.
Top

  NameDescription
Public propertyColumnNameGets or sets the name of a column that contains a foreign key that is used to query the data source.
Protected propertyContextGets the HttpContext instance of the owner control. (Inherited from DataSourceExpression.)
Public propertyDataSourceGets the data source object that is associated with the owner control. (Inherited from DataSourceExpression.)
Protected propertyIsTrackingViewStateGets a value that indicates whether a data source expression object is tracking its view state changes. (Inherited from DataSourceExpression.)
Protected propertyOwnerGets the owner control. (Inherited from DataSourceExpression.)
Protected propertyViewStateGets an instance of the StateBag class that contains the current view state information. (Inherited from DataSourceExpression.)
Top

  NameDescription
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetQueryableGets the query from the data source.. (Overrides DataSourceExpression.GetQueryable(IQueryable).)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodLoadViewStateLoads the state of the values in the DataSourceExpression object that must be persisted. (Inherited from DataSourceExpression.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodSaveViewStateSaves the current view state of the DataSourceExpression object. (Inherited from DataSourceExpression.)
Public methodSetContextSets the HTTP context of the DynamicRouteExpression object. (Overrides DataSourceExpression.SetContext(Control, HttpContext, IQueryableDataSource).)
Public methodSetDirtyMarks the DataSourceExpression object so that its state will be saved in view state. (Inherited from DataSourceExpression.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Protected methodTrackViewStateTracks 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

  NameDescription
Explicit interface implemetationPrivate propertyIStateManager.IsTrackingViewStateWhen 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 implemetationPrivate methodIStateManager.LoadViewStateWhen implemented by a class, loads the previously saved view state of the data source expression object. (Inherited from DataSourceExpression.)
Explicit interface implemetationPrivate methodIStateManager.SaveViewStateWhen implemented by a class, saves the current view state of the DataSourceExpression object. (Inherited from DataSourceExpression.)
Explicit interface implemetationPrivate methodIStateManager.TrackViewStateWhen 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

The DynamicRouteExpression class is used with the QueryExtender control in page markup. The DynamicRouteExpression class gets the primary key from the routing information that is contained in a Web request. The QueryExtender control then uses the key in a Where clause. This modifies the query for the data source, which then returns table rows filtered by the key.

You can also filter data by using a foreign key that you specify using the ColumnName property.

Declarative Syntax

<asp:DynamicRouteExpression
  ColumnName="Name of the foreign key column"/>

A Visual Studio project with source code is available to accompany this topic: Scaffolding Dynamic Data.

The following example shows a custom List.aspx page template for the Products table. It uses the ColumnName property to specify the ProductCategory foreign key for filtering the Products rows.

The custom List.aspx page displays a column that contains links of the categories that are contained by the ProductCategory foreign-key column. When the user clicks one of these links, the List.aspx page displays only the rows that contain the selected category.

The example requires the following:

<%@ Page Language="C#" MasterPageFile="~/Site.master" CodeFile="List.aspx.cs" Inherits="List" %>

<%@ Register src="~/DynamicData/Content/GridViewPager.ascx" tagname="GridViewPager" tagprefix="asp" %>

<asp:Content ID="headContent" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:DynamicDataManager ID="DynamicDataManager1" runat="server" AutoLoadForeignKeys="true">
        <DataControls>
            <asp:DataControlReference ControlID="GridView1" />
        </DataControls>
    </asp:DynamicDataManager>


    <h2 class="DDSubHeader">Using DynamicRouteExpression with <%= table.DisplayName%> table</h2>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div class="DD">
                <asp:ValidationSummary ID="ValidationSummary1" runat="server" EnableClientScript="true"
                    HeaderText="List of validation errors" CssClass="DDValidator" />
                <asp:DynamicValidator runat="server" ID="GridViewValidator" ControlToValidate="GridView1" Display="None" CssClass="DDValidator" />
                <br /> <br />

                <div class="DDFilter"> 
                    <asp:HyperLink runat="server" ID="ViewAllLink" Text="View All Categories" />
                </div>

            </div>

            <asp:GridView ID="GridView1" runat="server" DataSourceID="GridDataSource" EnablePersistedSelection="true"
                AllowPaging="True" AllowSorting="True" CssClass="DDGridView"
                RowStyle-CssClass="td" HeaderStyle-CssClass="th" CellPadding="6">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:DynamicHyperLink runat="server" Action="Edit" Text="Edit"
                            />&nbsp;<asp:LinkButton runat="server" CommandName="Delete" Text="Delete"
                                OnClientClick='return confirm("Are you sure you want to delete this item?");'
                            />&nbsp;<asp:DynamicHyperLink runat="server" Text="Details" />
                            <!-- Create action link to filter items that
                            belong to the same category -->
                             <a ID="CategoryRouteID" runat="server" 
                                    href='<%# GetRouteInformation() %>'>
                                Filter By: <%# GetProductCategory() %>
                            </a>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

                <PagerStyle CssClass="DDFooter"/>        
                <PagerTemplate>
                    <asp:GridViewPager runat="server" />
                </PagerTemplate>
                <EmptyDataTemplate>
                    There are currently no items in this table.
                </EmptyDataTemplate>
            </asp:GridView>

            <asp:LinqDataSource ID="GridDataSource" runat="server" EnableDelete="true" />

            <asp:QueryExtender TargetControlID="GridDataSource" ID="GridQueryExtender" runat="server">
                <asp:DynamicRouteExpression ColumnName="ProductCategory" />
            </asp:QueryExtender>

            <br />

            <div class="DDBottomHyperLink">
                <asp:DynamicHyperLink ID="InsertHyperLink" runat="server" Action="Insert"><img runat="server" src="~/DynamicData/Content/Images/plus.gif" alt="Insert new item" />Insert new item</asp:DynamicHyperLink>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>
// Create route information based on the 
// foreign-key specified in the  
// DynamicRouteExpression page markup.  
protected string GetRouteInformation()
{

    // Retrieve the current data item. 
    var productItem = (Product)GetDataItem();

    if (productItem != null)
    {

        RouteValueDictionary rvd = new RouteValueDictionary();
        rvd.Add("ProductCategoryID", productItem.ProductCategoryID );

        string routePath =
            table.GetActionPath(PageAction.List, rvd);

        return routePath;

    }

    return string.Empty;
}

// Get the name of the foreign-key category.  
protected string GetProductCategory()
{
    // Retrieves the current data item. 
    var productItem = (Product)GetDataItem();

    if (productItem != null)
    {
        return productItem.ProductCategory.Name;
    }
    return string.Empty;
}

.NET Framework

Supported in: 4.6, 4.5, 4

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft