DynamicRouteExpression Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
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:
- Um site de dados dinâmicos. Para mais informações, consulte Guia: Criar um Novo Site de Dados Dinâmicos Usando Andaimes.
- A base de dados de exemplos AdventureWorksLT.
<%@ 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) |