DynamicRouteExpression Classe

Definição

Obtém a chave primária da informação de encaminhamento para realizar a filtragem de dados.

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

O exemplo seguinte mostra um modelo personalizado de página de List.aspx para a tabela de Produtos. Utiliza a ColumnName propriedade para especificar a chave estrangeira ProductCategory para filtrar as linhas de Produtos.

A página de List.aspx personalizada mostra uma coluna que contém ligações das categorias contidas pela coluna de chave estrangeira ProductCategory. Quando o utilizador clica num destes links, a página de List.aspx mostra apenas as linhas que contêm a categoria selecionada.

O exemplo requer o seguinte:

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

Observações

A DynamicRouteExpression classe é usada com o QueryExtender controlo na marcação de página. A DynamicRouteExpression classe obtém a chave primária da informação de encaminhamento contida num pedido Web. O QueryExtender controlo usa então a chave numa Where cláusula. Isto modifica a consulta para a fonte de dados, que depois devolve as linhas da tabela filtradas pela chave.

Também pode filtrar dados usando uma chave estrangeira que especifica usando a ColumnName propriedade.

Sintaxe declarativa

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

Construtores

Name Description
DynamicRouteExpression()

Inicializa uma nova instância da DynamicRouteExpression classe.

Propriedades

Name Description
ColumnName

Obtém ou define o nome de uma coluna que contém uma chave estrangeira usada para consultar a fonte de dados.

Context

Obtém a HttpContext instância do controlo do proprietário.

(Herdado de DataSourceExpression)
DataSource

Obtém o objeto fonte de dados associado ao controlo do proprietário.

(Herdado de DataSourceExpression)
IsTrackingViewState

Recebe um valor que indica se um objeto de expressão de fonte de dados está a acompanhar as alterações no estado da sua visualização.

(Herdado de DataSourceExpression)
Owner

Fica com o controlo do dono.

(Herdado de DataSourceExpression)
ViewState

Obtém uma instância da StateBag classe que contém a informação atual do estado da vista.

(Herdado de DataSourceExpression)

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetQueryable(IQueryable)

Recebe a consulta da fonte de dados.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadViewState(Object)

Carrega o estado dos valores no DataSourceExpression objeto que devem ser mantidos.

(Herdado de DataSourceExpression)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
SaveViewState()

Guarda o estado atual da vista do DataSourceExpression objeto.

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

Define o contexto HTTP do DynamicRouteExpression objeto.

SetDirty()

Marca o DataSourceExpression objeto para que o seu estado seja guardado no estado de visualização.

(Herdado de DataSourceExpression)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
TrackViewState()

Acompanha as alterações no estado da vista do DataSourceExpression objeto para que as alterações possam ser armazenadas no StateBag objeto para o objeto de expressão da fonte de dados.

(Herdado de DataSourceExpression)

Implementações de Interface Explícita

Name Description
IStateManager.IsTrackingViewState

Quando implementado por uma classe, obtém um valor que indica se um objeto de expressão de fonte de dados está a acompanhar as alterações do estado da sua visualização.

(Herdado de DataSourceExpression)
IStateManager.LoadViewState(Object)

Quando implementado por uma classe, carrega o estado de visualização previamente guardado do objeto de expressão da fonte de dados.

(Herdado de DataSourceExpression)
IStateManager.SaveViewState()

Quando implementado por uma classe, guarda o estado atual da vista do DataSourceExpression objeto.

(Herdado de DataSourceExpression)
IStateManager.TrackViewState()

Quando implementado por uma classe, acompanha as alterações no estado da vista do DataSourceExpression objeto para que as alterações possam ser armazenadas no StateBag objeto para o objeto de expressão da fonte de dados.

(Herdado de DataSourceExpression)

Aplica-se a