DynamicRouteExpression Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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:
Witryna sieci Web danych dynamicznych. Aby uzyskać więcej informacji, zobacz Przewodnik: tworzenie nowej dynamicznej witryny sieci Web danych przy użyciu szkieletu.
Przykładowa baza danych AdventureWorksLT. Aby uzyskać więcej informacji, zobacz How to: Connect to the AdventureWorksLT Database using an . Plik MDF.
<%@ 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) |