DynamicRouteExpression Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Haalt de primaire sleutel op uit de routeringsinformatie om gegevensfiltering uit te voeren.
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
- Overname
Voorbeelden
In het volgende voorbeeld ziet u een aangepaste List.aspx paginasjabloon voor de tabel Producten. De eigenschap wordt gebruikt ColumnName om de refererende sleutel ProductCategory op te geven voor het filteren van de rijen Producten.
Op de aangepaste List.aspx-pagina wordt een kolom weergegeven met koppelingen van de categorieën die zijn opgenomen in de kolom Met refererende sleutels van ProductCategory. Wanneer de gebruiker op een van deze koppelingen klikt, worden op de List.aspx pagina alleen de rijen weergegeven die de geselecteerde categorie bevatten.
Voor het voorbeeld is het volgende vereist:
- Een dynamische gegevenswebsite. Zie Walkthrough: Een nieuwe dynamische gegevenswebsite maken met behulp van scaffolding voor meer informatie.
- De AdventureWorksLT-voorbeelddatabase.
<%@ 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
Opmerkingen
De DynamicRouteExpression klasse wordt gebruikt met het QueryExtender besturingselement in paginamarkeringen. De DynamicRouteExpression klasse haalt de primaire sleutel op van de routeringsgegevens die zijn opgenomen in een webaanvraag. Het QueryExtender besturingselement gebruikt vervolgens de sleutel in een Where component. Hiermee wijzigt u de query voor de gegevensbron, die vervolgens tabelrijen retourneert die zijn gefilterd op de sleutel.
U kunt ook gegevens filteren met behulp van een refererende sleutel die u opgeeft met behulp van de ColumnName eigenschap.
Declaratieve syntaxis
<asp:DynamicRouteExpression
ColumnName="Name of the foreign key column"/>
Constructors
| Name | Description |
|---|---|
| DynamicRouteExpression() |
Initialiseert een nieuw exemplaar van de DynamicRouteExpression klasse. |
Eigenschappen
| Name | Description |
|---|---|
| ColumnName |
Hiermee haalt u de naam op van een kolom die een refererende sleutel bevat die wordt gebruikt om een query uit te voeren op de gegevensbron. |
| Context |
Hiermee haalt u het HttpContext exemplaar van het eigenaarbeheer op. (Overgenomen van DataSourceExpression) |
| DataSource |
Hiermee haalt u het gegevensbronobject op dat is gekoppeld aan het eigenaarbeheer. (Overgenomen van DataSourceExpression) |
| IsTrackingViewState |
Hiermee wordt een waarde opgehaald die aangeeft of een expressieobject voor de gegevensbron de status van de weergave bijhoudt. (Overgenomen van DataSourceExpression) |
| Owner |
Hiermee haalt u het besturingselement van de eigenaar op. (Overgenomen van DataSourceExpression) |
| ViewState |
Hiermee wordt een exemplaar opgehaald van de StateBag klasse die de huidige informatie over de weergavestatus bevat. (Overgenomen van DataSourceExpression) |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetQueryable(IQueryable) |
Haalt de query op uit de gegevensbron. |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| LoadViewState(Object) |
Laadt de status van de waarden in het DataSourceExpression object dat moet worden bewaard. (Overgenomen van DataSourceExpression) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| SaveViewState() |
Hiermee wordt de huidige weergavestatus van het DataSourceExpression object opgeslagen. (Overgenomen van DataSourceExpression) |
| SetContext(Control, HttpContext, IQueryableDataSource) |
Hiermee stelt u de HTTP-context van het DynamicRouteExpression object in. |
| SetDirty() |
Hiermee wordt het DataSourceExpression object gemarkeerd, zodat de status ervan wordt opgeslagen in de weergavestatus. (Overgenomen van DataSourceExpression) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| TrackViewState() |
Hiermee worden weergavestatuswijzigingen van het DataSourceExpression object bijgehouden, zodat de wijzigingen kunnen worden opgeslagen in het StateBag object voor het object voor de gegevensbronexpressie. (Overgenomen van DataSourceExpression) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| IStateManager.IsTrackingViewState |
Wanneer een klasse wordt geïmplementeerd, haalt u een waarde op die aangeeft of een gegevensbronexpressieobject wijzigingen in de weergavestatus bijhoudt. (Overgenomen van DataSourceExpression) |
| IStateManager.LoadViewState(Object) |
Wanneer deze door een klasse wordt geïmplementeerd, laadt u de eerder opgeslagen weergavestatus van het object voor de gegevensbronexpressie. (Overgenomen van DataSourceExpression) |
| IStateManager.SaveViewState() |
Wanneer deze wordt geïmplementeerd door een klasse, wordt de huidige weergavestatus van het DataSourceExpression object opgeslagen. (Overgenomen van DataSourceExpression) |
| IStateManager.TrackViewState() |
Wanneer deze door een klasse wordt geïmplementeerd, worden weergavestatuswijzigingen van het DataSourceExpression object bijgehouden, zodat de wijzigingen kunnen worden opgeslagen in het StateBag object voor het object voor de gegevensbronexpressie. (Overgenomen van DataSourceExpression) |