DynamicRouteExpression Osztály

Definíció

Lekéri az elsődleges kulcsot az útválasztási adatokból az adatszűrés végrehajtásához.

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
Öröklődés
DynamicRouteExpression

Példák

Az alábbi példa egy egyéni List.aspx lapsablont mutat be a Termékek táblához. A tulajdonság használatával ColumnName adja meg a ProductCategory idegenkulcsot a Termékek sorok szűréséhez.

Az egyéni List.aspx lapon megjelenik egy oszlop, amely a ProductCategory idegenkulcs-oszlopban található kategóriák hivatkozásait tartalmazza. Amikor a felhasználó az egyik hivatkozásra kattint, a List.aspx lapon csak a kijelölt kategóriát tartalmazó sorok jelennek meg.

A példához a következők szükségesek:

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

Megjegyzések

Az DynamicRouteExpression osztályt az QueryExtender oldaljelölés vezérlőjével használja a rendszer. Az DynamicRouteExpression osztály lekéri az elsődleges kulcsot a webes kérelemben található útválasztási információkból. A QueryExtender vezérlő ezután egy Where záradék kulcsát használja. Ez módosítja az adatforrás lekérdezését, majd visszaadja a kulcs által szűrt táblasorokat.

Az adatokat a tulajdonság használatával ColumnName megadott idegen kulccsal is szűrheti.

Deklaratív szintaxis

<asp:DynamicRouteExpression
  ColumnName="Name of the foreign key column"/>

Konstruktorok

Name Description
DynamicRouteExpression()

Inicializálja a DynamicRouteExpression osztály új példányát.

Tulajdonságok

Name Description
ColumnName

Lekéri vagy beállítja az adatforrás lekérdezéséhez használt idegen kulcsot tartalmazó oszlop nevét.

Context

Lekéri a HttpContext tulajdonosvezérlő példányát.

(Öröklődés forrása DataSourceExpression)
DataSource

Lekéri a tulajdonosvezérlőhöz társított adatforrás-objektumot.

(Öröklődés forrása DataSourceExpression)
IsTrackingViewState

Olyan értéket kap, amely jelzi, hogy egy adatforráskifejezés-objektum követi-e a nézetállapot változásait.

(Öröklődés forrása DataSourceExpression)
Owner

Lekéri a tulajdonosi irányítást.

(Öröklődés forrása DataSourceExpression)
ViewState

Lekéri az StateBag osztály egy példányát, amely az aktuális nézetállapot-információkat tartalmazza.

(Öröklődés forrása DataSourceExpression)

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetQueryable(IQueryable)

Lekéri a lekérdezést az adatforrásból.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
LoadViewState(Object)

Betölti a megőrzendő objektum értékeinek DataSourceExpression állapotát.

(Öröklődés forrása DataSourceExpression)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
SaveViewState()

Menti az objektum aktuális nézetállapotát DataSourceExpression .

(Öröklődés forrása DataSourceExpression)
SetContext(Control, HttpContext, IQueryableDataSource)

Beállítja az objektum HTTP-környezetét DynamicRouteExpression .

SetDirty()

Megjelöli az DataSourceExpression objektumot, hogy az állapota megtekintési állapotban legyen mentve.

(Öröklődés forrása DataSourceExpression)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
TrackViewState()

Nyomon követi az DataSourceExpression objektum állapotváltozásainak megtekintését, hogy a módosítások az adatforrás-kifejezés objektumában StateBag tárolhatók legyenek.

(Öröklődés forrása DataSourceExpression)

Explicit interfész-implementációk

Name Description
IStateManager.IsTrackingViewState

Egy osztály által implementált érték azt jelzi, hogy egy adatforráskifejezés-objektum követi-e a nézetállapot változásait.

(Öröklődés forrása DataSourceExpression)
IStateManager.LoadViewState(Object)

Amikor egy osztály implementálja, betölti az adatforráskifejezés-objektum korábban mentett nézetállapotát.

(Öröklődés forrása DataSourceExpression)
IStateManager.SaveViewState()

Amikor egy osztály implementálja, menti az objektum aktuális nézetállapotát DataSourceExpression .

(Öröklődés forrása DataSourceExpression)
IStateManager.TrackViewState()

Amikor egy osztály implementálja, nyomon követi az DataSourceExpression objektum állapotváltozásainak megtekintését, hogy a módosítások az StateBag adatforrás-kifejezés objektumában tárolhatók legyenek.

(Öröklődés forrása DataSourceExpression)

A következőre érvényes: