Sdílet prostřednictvím


DynamicRouteExpression Třída

Definice

Získá primární klíč z informací o směrování, aby bylo možné provádět filtrování dat.

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
Dědičnost
DynamicRouteExpression

Příklady

K dispozici je Visual Studio projekt se zdrojovým kódem pro doprovodné téma: Generování dynamických dat.

Následující příklad ukazuje vlastní šablonu stránky List.aspx pro tabulku Products. Používá ColumnName vlastnost k určení cizího klíče ProductCategory pro filtrování řádků Products.

Na vlastní stránce List.aspx se zobrazí sloupec obsahující odkazy kategorií obsažených ve sloupci Cizí klíč ProductCategory. Když uživatel klikne na některý z těchto odkazů, zobrazí se na stránce List.aspx jenom řádky, které obsahují vybranou kategorii.

Příklad vyžaduje následující:

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

Poznámky

Třída DynamicRouteExpression se používá s ovládacím QueryExtender prvku v značkách stránky. Třída DynamicRouteExpression získá primární klíč z informací o směrování, které jsou obsaženy ve webovém požadavku. Ovládací QueryExtender prvek pak použije klíč v Where klauzuli. Tím se změní dotaz pro zdroj dat, který pak vrátí řádky tabulky filtrované klíčem.

Data můžete filtrovat také pomocí cizího klíče, který zadáte pomocí ColumnName vlastnosti.

Deklarativní syntaxe

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

Konstruktory

DynamicRouteExpression()

Inicializuje novou instanci DynamicRouteExpression třídy.

Vlastnosti

ColumnName

Získá nebo nastaví název sloupce, který obsahuje cizí klíč, který se používá k dotazování zdroje dat.

Context

Získá HttpContext instanci ovládacího prvku vlastníka.

(Zděděno od DataSourceExpression)
DataSource

Získá objekt zdroje dat, který je přidružen k ovládacímu prvku vlastníka.

(Zděděno od DataSourceExpression)
IsTrackingViewState

Získá hodnotu, která určuje, zda objekt výrazu zdroje dat sleduje změny stavu zobrazení.

(Zděděno od DataSourceExpression)
Owner

Získá ovládací prvek vlastníka.

(Zděděno od DataSourceExpression)
ViewState

Získá instanci StateBag třídy, která obsahuje aktuální informace o stavu zobrazení.

(Zděděno od DataSourceExpression)

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetQueryable(IQueryable)

Získá dotaz ze zdroje dat.

GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
LoadViewState(Object)

Načte stav hodnot v objektu, DataSourceExpression který musí být zachován.

(Zděděno od DataSourceExpression)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
SaveViewState()

Uloží aktuální stav zobrazení DataSourceExpression objektu.

(Zděděno od DataSourceExpression)
SetContext(Control, HttpContext, IQueryableDataSource)

Nastaví kontext HTTP objektu DynamicRouteExpression .

SetDirty()

Označí DataSourceExpression objekt tak, aby jeho stav byl uložen ve stavu zobrazení.

(Zděděno od DataSourceExpression)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TrackViewState()

Sleduje změny stavu zobrazení objektu tak, aby změny bylo možné uložit v objektu pro objekt DataSourceExpression StateBag výrazu zdroje dat.

(Zděděno od DataSourceExpression)

Explicitní implementace rozhraní

IStateManager.IsTrackingViewState

Při implementaci třídou získá hodnotu, která určuje, jestli objekt výrazu zdroje dat sleduje změny stavu zobrazení.

(Zděděno od DataSourceExpression)
IStateManager.LoadViewState(Object)

Při implementaci třídou načte dříve uložený stav zobrazení objektu výrazu zdroje dat.

(Zděděno od DataSourceExpression)
IStateManager.SaveViewState()

Při implementaci třídou uloží aktuální stav zobrazení DataSourceExpression objektu.

(Zděděno od DataSourceExpression)
IStateManager.TrackViewState()

Při implementaci třídou sleduje změny stavu zobrazení objektu tak, aby změny bylo možné uložit v objektu pro DataSourceExpression StateBag objekt výrazu zdroje dat.

(Zděděno od DataSourceExpression)

Platí pro