Udostępnij za pośrednictwem


DynamicRouteExpression Klasa

Definicja

Pobiera klucz podstawowy z informacji o routingu w celu przeprowadzenia filtrowania danych.

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
Dziedziczenie
DynamicRouteExpression

Przykłady

Projekt programu Visual Studio z kodem źródłowym jest dostępny do dołączenia do tego tematu: Tworzenie szkieletu danych dynamicznych.

Poniższy przykład przedstawia niestandardowy szablon strony List.aspx dla tabeli Products. Używa ColumnName właściwości , aby określić klucz obcy ProductCategory do filtrowania wierszy Products.

Niestandardowa strona List.aspx wyświetla kolumnę zawierającą linki do kategorii zawartych w kolumnie ProductCategory klucza obcego. Gdy użytkownik kliknie jeden z tych linków, na stronie List.aspx będą wyświetlane tylko wiersze zawierające wybraną kategorię.

W przykładzie wymagane są następujące elementy:

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

Uwagi

Klasa DynamicRouteExpression jest używana z kontrolką w znacznikach QueryExtender strony. Klasa DynamicRouteExpression pobiera klucz podstawowy z informacji o routingu zawartych w żądaniu sieci Web. Kontrolka QueryExtender następnie używa klucza w klauzuli Where . Spowoduje to zmodyfikowanie zapytania dla źródła danych, które następnie zwraca wiersze tabeli filtrowane według klucza.

Dane można również filtrować przy użyciu klucza obcego określonego ColumnName za pomocą właściwości .

Składnia deklaracyjna

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

Konstruktory

DynamicRouteExpression()

Inicjuje nowe wystąpienie klasy DynamicRouteExpression.

Właściwości

ColumnName

Pobiera lub ustawia nazwę kolumny zawierającej klucz obcy używany do wykonywania zapytań względem źródła danych.

Context

HttpContext Pobiera wystąpienie kontrolki właściciela.

(Odziedziczone po DataSourceExpression)
DataSource

Pobiera obiekt źródła danych skojarzony z kontrolką właściciela.

(Odziedziczone po DataSourceExpression)
IsTrackingViewState

Pobiera wartość wskazującą, czy obiekt wyrażenia źródła danych śledzi zmiany stanu widoku.

(Odziedziczone po DataSourceExpression)
Owner

Pobiera kontrolę właściciela.

(Odziedziczone po DataSourceExpression)
ViewState

Pobiera wystąpienie StateBag klasy zawierającej bieżące informacje o stanie widoku.

(Odziedziczone po DataSourceExpression)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetQueryable(IQueryable)

Pobiera zapytanie ze źródła danych.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
LoadViewState(Object)

Ładuje stan wartości w DataSourceExpression obiekcie, które muszą być utrwalane.

(Odziedziczone po DataSourceExpression)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
SaveViewState()

Zapisuje bieżący stan DataSourceExpression widoku obiektu.

(Odziedziczone po DataSourceExpression)
SetContext(Control, HttpContext, IQueryableDataSource)

Ustawia kontekst DynamicRouteExpression HTTP obiektu.

SetDirty()

Oznacza obiekt tak DataSourceExpression , aby jego stan został zapisany w stanie widoku.

(Odziedziczone po DataSourceExpression)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
TrackViewState()

Śledzi zmiany DataSourceExpression stanu widoku obiektu, aby zmiany mogły być przechowywane w StateBag obiekcie dla obiektu wyrażenia źródła danych.

(Odziedziczone po DataSourceExpression)

Jawne implementacje interfejsu

IStateManager.IsTrackingViewState

Po zaimplementowaniu przez klasę pobiera wartość wskazującą, czy obiekt wyrażenia źródła danych śledzi zmiany stanu widoku.

(Odziedziczone po DataSourceExpression)
IStateManager.LoadViewState(Object)

Po zaimplementowaniu przez klasę ładuje wcześniej zapisany stan widoku obiektu wyrażenia źródła danych.

(Odziedziczone po DataSourceExpression)
IStateManager.SaveViewState()

Po zaimplementowaniu przez klasę program zapisuje bieżący stan DataSourceExpression widoku obiektu.

(Odziedziczone po DataSourceExpression)
IStateManager.TrackViewState()

Po zaimplementowaniu przez klasę śledzi zmiany DataSourceExpression stanu widoku obiektu, dzięki czemu zmiany mogą być przechowywane w StateBag obiekcie dla obiektu wyrażenia źródła danych.

(Odziedziczone po DataSourceExpression)

Dotyczy