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 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
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 :
- 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 automatiques.
- Exemple de base de données AdventureWorksLT.
<%@ 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) |