DynamicRouteExpression Classe

Definição

Obtém a chave primária de informações de roteamento para executar a filtragem de dados.Gets the primary key from the routing information in order to perform data filtering.

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
Herança
DynamicRouteExpression

Exemplos

Um projeto do Visual Studio com código-fonte está disponível para acompanhar este tópico: Scaffolding dados dinâmicos.A Visual Studio project with source code is available to accompany this topic: Scaffolding Dynamic Data.

O exemplo a seguir mostra um modelo de página List. aspx personalizado para a tabela Products.The following example shows a custom List.aspx page template for the Products table. Ele usa a ColumnName propriedade para especificar a chave estrangeira ProductCategory para filtrar as linhas de produtos.It uses the ColumnName property to specify the ProductCategory foreign key for filtering the Products rows.

A página List. aspx Personalizada exibe uma coluna que contém links das categorias contidas pela coluna de chave estrangeira ProductCategory.The custom List.aspx page displays a column that contains links of the categories that are contained by the ProductCategory foreign-key column. Quando o usuário clica em um desses links, a página List. aspx exibe apenas as linhas que contêm a categoria selecionada.When the user clicks one of these links, the List.aspx page displays only the rows that contain the selected category.

O exemplo requer o seguinte:The example requires the following:

<%@ 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"
                            />&nbsp;<asp:LinkButton runat="server" CommandName="Delete" Text="Delete"
                                OnClientClick='return confirm("Are you sure you want to delete this item?");'
                            />&nbsp;<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"
                            />&nbsp;<asp:LinkButton runat="server" CommandName="Delete" Text="Delete"
                                OnClientClick='return confirm("Are you sure you want to delete this item?");'
                            />&nbsp;<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

Comentários

A DynamicRouteExpression classe é usada com o QueryExtender controle na marcação de página.The DynamicRouteExpression class is used with the QueryExtender control in page markup. A DynamicRouteExpression classe obtém a chave primária das informações de roteamento contidas em uma solicitação da Web.The DynamicRouteExpression class gets the primary key from the routing information that is contained in a Web request. QueryExtenderEm seguida, o controle usa a chave em uma Where cláusula.The QueryExtender control then uses the key in a Where clause. Isso modifica a consulta da fonte de dados, que retorna as linhas da tabela filtradas pela chave.This modifies the query for the data source, which then returns table rows filtered by the key.

Você também pode filtrar dados usando uma chave estrangeira que você especifica usando a ColumnName propriedade.You can also filter data by using a foreign key that you specify using the ColumnName property.

Sintaxe declarativaDeclarative Syntax

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

Construtores

DynamicRouteExpression()

Inicializa uma nova instância da classe DynamicRouteExpression.Initializes a new instance of the DynamicRouteExpression class.

Propriedades

ColumnName

Obtém ou define o nome de uma coluna que contém uma chave estrangeira que é usada para consultar a fonte de dados.Gets or sets the name of a column that contains a foreign key that is used to query the data source.

Context

Obtém a instância HttpContext do controle de proprietário.Gets the HttpContext instance of the owner control.

(Herdado de DataSourceExpression)
DataSource

Obtém o objeto de fonte de dados associado ao controle de proprietário.Gets the data source object that is associated with the owner control.

(Herdado de DataSourceExpression)
IsTrackingViewState

Obtém um valor que indica se um objeto de expressão da fonte de dados está controlando suas alterações de estado de exibição.Gets a value that indicates whether a data source expression object is tracking its view state changes.

(Herdado de DataSourceExpression)
Owner

Obtém o controle de proprietário.Gets the owner control.

(Herdado de DataSourceExpression)
ViewState

Obtém uma instância da classe StateBag que contém informações atuais de estado de exibição.Gets an instance of the StateBag class that contains the current view state information.

(Herdado de DataSourceExpression)

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetQueryable(IQueryable)

Obtém a consulta da fonte de dados.Gets the query from the data source.

GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
LoadViewState(Object)

Carrega o estado dos valores no objeto DataSourceExpression que deve ser persistente.Loads the state of the values in the DataSourceExpression object that must be persisted.

(Herdado de DataSourceExpression)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
SaveViewState()

Salva o estado de exibição atual do objeto DataSourceExpression.Saves the current view state of the DataSourceExpression object.

(Herdado de DataSourceExpression)
SetContext(Control, HttpContext, IQueryableDataSource)

Define o contexto HTTP do objeto DynamicRouteExpression.Sets the HTTP context of the DynamicRouteExpression object.

SetDirty()

Marca o objeto DataSourceExpression para que seu estado seja salvo no estado de exibição.Marks the DataSourceExpression object so that its state will be saved in view state.

(Herdado de DataSourceExpression)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)
TrackViewState()

Controla as alterações de estado de exibição do objeto DataSourceExpression, de modo que as alterações possam ser armazenadas no objeto StateBag para o objeto de expressão da fonte de dados.Tracks view state changes of the DataSourceExpression object so that the changes can be stored in the StateBag object for the data source expression object.

(Herdado de DataSourceExpression)

Implantações explícitas de interface

IStateManager.IsTrackingViewState

Quando implementado por uma classe, obtém um valor que indica se um objeto de expressão da fonte de dados está controlando suas alterações de estado de exibição.When implemented by a class, gets a value that indicates whether a data source expression object is tracking its view state changes.

(Herdado de DataSourceExpression)
IStateManager.LoadViewState(Object)

Quando implementado por uma classe, carrega o estado de exibição salvo anteriormente do objeto de expressão da fonte de dados.When implemented by a class, loads the previously saved view state of the data source expression object.

(Herdado de DataSourceExpression)
IStateManager.SaveViewState()

Quando implementado por uma classe, salva o estado de exibição atual do objeto DataSourceExpression.When implemented by a class, saves the current view state of the DataSourceExpression object.

(Herdado de DataSourceExpression)
IStateManager.TrackViewState()

Quando implementado por uma classe, controla as alterações de estado de exibição do objeto DataSourceExpression, de modo que as alterações possam ser armazenadas no objeto StateBag para o objeto de expressão da fonte de dados.When implemented by a class, tracks view state changes of the DataSourceExpression object so that the changes can be stored in the StateBag object for the data source expression object.

(Herdado de DataSourceExpression)

Aplica-se a