DynamicRouteExpression Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft den Primärschlüssel aus den Routinginformationen ab, um die Datenfilterung durchzuführen.
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
- Vererbung
Beispiele
Das folgende Beispiel zeigt eine benutzerdefinierte List.aspx Seitenvorlage für die Tabelle "Produkte". Sie verwendet die ColumnName Eigenschaft, um den ProductCategory-Fremdschlüssel zum Filtern der Artikelzeilen anzugeben.
Auf der benutzerdefinierten List.aspx-Seite wird eine Spalte mit Links zu den Kategorien angezeigt, die in der Fremdschlüsselspalte "ProductCategory" enthalten sind. Wenn der Benutzer auf einen dieser Links klickt, zeigt die List.aspx-Seite nur die Zeilen an, die die ausgewählte Kategorie enthalten.
Für das Beispiel ist Folgendes erforderlich:
- Eine Website für dynamische Daten. Weitere Informationen finden Sie unter Walkthrough: Creating a New Dynamic Data Web Site Using Scaffolding.
- Die AdventureWorksLT-Beispieldatenbank.
<%@ 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
Hinweise
Die DynamicRouteExpression Klasse wird mit dem QueryExtender Steuerelement im Seitenmarkup verwendet. Die DynamicRouteExpression Klasse ruft den Primärschlüssel aus den Routinginformationen ab, die in einer Webanforderung enthalten sind. Das QueryExtender Steuerelement verwendet dann den Schlüssel in einer Where Klausel. Dadurch wird die Abfrage für die Datenquelle geändert, die dann nach dem Schlüssel gefilterte Tabellenzeilen zurückgibt.
Sie können Daten auch mithilfe eines Fremdschlüssels filtern, den Sie mit der ColumnName Eigenschaft angeben.
Deklarative Syntax
<asp:DynamicRouteExpression
ColumnName="Name of the foreign key column"/>
Konstruktoren
| Name | Beschreibung |
|---|---|
| DynamicRouteExpression() |
Initialisiert eine neue Instanz der DynamicRouteExpression-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| ColumnName |
Dient zum Abrufen oder Festlegen des Namens einer Spalte, die einen Fremdschlüssel enthält, der zum Abfragen der Datenquelle verwendet wird. |
| Context |
Ruft die HttpContext Instanz des Besitzersteuerelements ab. (Geerbt von DataSourceExpression) |
| DataSource |
Ruft das Datenquellenobjekt ab, das dem Besitzersteuerelement zugeordnet ist. (Geerbt von DataSourceExpression) |
| IsTrackingViewState |
Ruft einen Wert ab, der angibt, ob ein Datenquellenausdrucksobjekt seine Ansichtszustandsänderungen nachverfolgt. (Geerbt von DataSourceExpression) |
| Owner |
Ruft das Besitzersteuerelement ab. (Geerbt von DataSourceExpression) |
| ViewState |
Ruft eine Instanz der StateBag Klasse ab, die die aktuellen Ansichtsstatusinformationen enthält. (Geerbt von DataSourceExpression) |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetQueryable(IQueryable) |
Ruft die Abfrage aus der Datenquelle ab. |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| LoadViewState(Object) |
Lädt den Status der Werte im DataSourceExpression Objekt, die beibehalten werden müssen. (Geerbt von DataSourceExpression) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| SaveViewState() |
Speichert den aktuellen Ansichtszustand des DataSourceExpression Objekts. (Geerbt von DataSourceExpression) |
| SetContext(Control, HttpContext, IQueryableDataSource) |
Legt den HTTP-Kontext des DynamicRouteExpression Objekts fest. |
| SetDirty() |
Markiert das DataSourceExpression Objekt so, dass sein Zustand im Ansichtszustand gespeichert wird. (Geerbt von DataSourceExpression) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| TrackViewState() |
Verfolgt Ansichtsstatusänderungen des DataSourceExpression Objekts nach, sodass die Änderungen im StateBag Objekt für das Datenquellenausdrucksobjekt gespeichert werden können. (Geerbt von DataSourceExpression) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IStateManager.IsTrackingViewState |
Wenn sie von einer Klasse implementiert wird, wird ein Wert abgerufen, der angibt, ob ein Datenquellenausdrucksobjekt seine Ansichtszustandsänderungen nachverfolgt. (Geerbt von DataSourceExpression) |
| IStateManager.LoadViewState(Object) |
Wenn sie von einer Klasse implementiert wird, wird der zuvor gespeicherte Ansichtszustand des Datenquellenausdrucksobjekts geladen. (Geerbt von DataSourceExpression) |
| IStateManager.SaveViewState() |
Wenn sie von einer Klasse implementiert wird, wird der aktuelle Ansichtsstatus des DataSourceExpression Objekts gespeichert. (Geerbt von DataSourceExpression) |
| IStateManager.TrackViewState() |
Wenn sie von einer Klasse implementiert wird, werden Ansichtsstatusänderungen des DataSourceExpression Objekts nachverfolgt, sodass die Änderungen im StateBag Objekt für das Datenquellenausdrucksobjekt gespeichert werden können. (Geerbt von DataSourceExpression) |