DynamicRouteExpression Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient la clé primaire à partir 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
Exemples
Un projet Visual Studio avec du code source est disponible pour accompagner cette rubrique : génération automatique de données dynamiques.
L’exemple suivant montre un modèle de page List.aspx personnalisé pour la table Products. Elle utilise la ColumnName propriété pour spécifier la clé étrangère ProductCategory pour filtrer les lignes Products.
La page List.aspx personnalisée affiche une colonne qui contient des liens des catégories contenues dans 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 :
Un site web de données dynamiques. Pour plus d’informations, consultez procédure pas à pas : création d’un site web de données dynamiques à l’aide de la génération de modèles automatique.
Exemple de base de données AdventureWorksLT. Pour plus d’informations, consultez Guide pratique pour Connecter à la base de données AdventureWorksLT à l’aide d’un . Fichier MDF.
<%@ 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
DynamicRouteExpression() |
Initialise une nouvelle instance de la classe DynamicRouteExpression. |
Propriétés
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 source de données associé au contrôle propriétaire. (Hérité de DataSourceExpression) |
IsTrackingViewState |
Obtient une valeur qui indique si un objet expression de source de données effectue le suivi des modifications apportées à son état d'affichage. (Hérité de DataSourceExpression) |
Owner |
Obtient le contrôle propriétaire. (Hérité de DataSourceExpression) |
ViewState |
Obtient une instance de la classe StateBag qui contient les informations sur l'état d'affichage actuel. (Hérité de DataSourceExpression) |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetQueryable(IQueryable) |
Obtient la requête de la source de données. |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
LoadViewState(Object) |
Charge l'état des valeurs de l'objet DataSourceExpression qui doivent être persistantes. (Hérité de DataSourceExpression) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (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() |
Suit les modifications apportées à l'état d'affichage de l'objet DataSourceExpression afin que les modifications puissent être stockées dans l'objet StateBag pour l'objet expression de source de données. (Hérité de DataSourceExpression) |
Implémentations d’interfaces explicites
IStateManager.IsTrackingViewState |
En cas d'implémentation par une classe, obtient une valeur qui indique si un objet expression de source de données effectue le suivi des modifications de son é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 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 apportées à l'état d'affichage de l'objet DataSourceExpression afin que les modifications puissent être stockées dans l'objet StateBag pour l'objet expression de source de données. (Hérité de DataSourceExpression) |