Partager via


DynamicRouteExpression Classe

Définition

Obtient la clé primaire des informations de routage pour effectuer le filtrage des données.

public ref class DynamicRouteExpression : System::Web::UI::WebControls::Expressions::DataSourceExpression
public class DynamicRouteExpression : System.Web.UI.WebControls.Expressions.DataSourceExpression
type DynamicRouteExpression = class
    inherit DataSourceExpression
Public Class DynamicRouteExpression
Inherits DataSourceExpression
Héritage
DynamicRouteExpression

Exemples

L’exemple suivant montre un modèle de page List.aspx personnalisé pour la table Products. Il utilise la ColumnName propriété pour spécifier la clé étrangère ProductCategory pour filtrer les lignes Products.

La page de List.aspx personnalisée affiche une colonne qui contient des liens des catégories contenues par la colonne Clé étrangère ProductCategory. Lorsque l’utilisateur clique sur l’un de ces liens, la page List.aspx affiche uniquement les lignes qui contiennent la catégorie sélectionnée.

L’exemple nécessite les éléments suivants :

<%@ 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"
                            /> <asp:LinkButton runat="server" CommandName="Delete" Text="Delete"
                                OnClientClick='return confirm("Are you sure you want to delete this item?");'
                            /> <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>
<%@ Page Language="VB" MasterPageFile="~/Site.master" CodeFile="List.aspx.vb" 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"><%= table.DisplayName%></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" />
            </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"
                            /> <asp:LinkButton runat="server" CommandName="Delete" Text="Delete"
                                OnClientClick='return confirm("Are you sure you want to delete this item?");'
                            /> <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" />
            
            <!-- Set the foreign-key to use for filtering -->
            <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;
}
' Create route information based on the
' foreign-key specified in the 
' DynamicRouteExpression page markup. 
Protected Function GetRouteInformation() As String

    ' Retrieve the current data item.
    Dim productItem = CType(GetDataItem(), Product)

    If productItem IsNot Nothing Then

        Dim rvd As New RouteValueDictionary()
        rvd.Add("ProductCategoryID", productItem.ProductCategoryID)

        Dim routePath As String = table.GetActionPath(PageAction.List, rvd)

        Return routePath

    End If

    Return String.Empty
End Function

' Get the name of the foreign-key category. 
Protected Function GetProductCategory() As String
    ' Retrieves the current data item.
    Dim productItem = CType(GetDataItem(), Product)

    If productItem IsNot Nothing Then
        Return productItem.ProductCategory.Name
    End If
    Return String.Empty
End Function

Remarques

La DynamicRouteExpression classe est utilisée avec le contrôle dans le QueryExtender balisage de page. La DynamicRouteExpression classe obtient la clé primaire à partir des informations de routage contenues dans une requête Web. Le QueryExtender contrôle utilise ensuite la clé dans une Where clause. Cela modifie la requête de la source de données, qui retourne ensuite les lignes de table filtrées par la clé.

Vous pouvez également filtrer les données à l’aide d’une clé étrangère que vous spécifiez à l’aide de la ColumnName propriété.

Syntaxe déclarative

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

Constructeurs

Nom Description
DynamicRouteExpression()

Initialise une nouvelle instance de la classe DynamicRouteExpression.

Propriétés

Nom Description
ColumnName

Obtient ou définit le nom d’une colonne qui contient une clé étrangère utilisée pour interroger la source de données.

Context

Obtient l’instance HttpContext du contrôle propriétaire.

(Hérité de DataSourceExpression)
DataSource

Obtient l’objet de source de données associé au contrôle propriétaire.

(Hérité de DataSourceExpression)
IsTrackingViewState

Obtient une valeur qui indique si un objet d’expression de source de données suit ses modifications d’état d’affichage.

(Hérité de DataSourceExpression)
Owner

Obtient le contrôle propriétaire.

(Hérité de DataSourceExpression)
ViewState

Obtient une instance de la StateBag classe qui contient les informations d’état d’affichage actuelles.

(Hérité de DataSourceExpression)

Méthodes

Nom Description
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetQueryable(IQueryable)

Obtient la requête à partir de la source de données.

GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
LoadViewState(Object)

Charge l’état des valeurs dans l’objet DataSourceExpression qui doit être conservé.

(Hérité de DataSourceExpression)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
SaveViewState()

Enregistre l’état d’affichage actuel de l’objet DataSourceExpression .

(Hérité de DataSourceExpression)
SetContext(Control, HttpContext, IQueryableDataSource)

Définit le contexte HTTP de l’objet DynamicRouteExpression .

SetDirty()

Marque l’objet DataSourceExpression afin que son état soit enregistré dans l’état d’affichage.

(Hérité de DataSourceExpression)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)
TrackViewState()

Effectue le suivi des modifications d’état d’affichage de l’objet DataSourceExpression afin que les modifications puissent être stockées dans l’objet StateBag pour l’objet d’expression de source de données.

(Hérité de DataSourceExpression)

Implémentations d’interfaces explicites

Nom Description
IStateManager.IsTrackingViewState

En cas d’implémentation par une classe, obtient une valeur qui indique si un objet d’expression de source de données suit ses modifications d’état d’affichage.

(Hérité de DataSourceExpression)
IStateManager.LoadViewState(Object)

En cas d’implémentation par une classe, charge l’état d’affichage précédemment enregistré de l’objet d’expression de source de données.

(Hérité de DataSourceExpression)
IStateManager.SaveViewState()

En cas d’implémentation par une classe, enregistre l’état d’affichage actuel de l’objet DataSourceExpression .

(Hérité de DataSourceExpression)
IStateManager.TrackViewState()

En cas d’implémentation par une classe, suit les modifications de l’état d’affichage de l’objet DataSourceExpression afin que les modifications puissent être stockées dans l’objet StateBag pour l’objet d’expression de source de données.

(Hérité de DataSourceExpression)

S’applique à