Freigeben über


DynamicRouteExpression Klasse

Definition

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
DynamicRouteExpression

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:

<%@ 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)

Gilt für: