DynamicRouteExpression Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar primärnyckeln från routningsinformationen för att kunna utföra datafiltrering.
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
- Arv
Exempel
I följande exempel visas en anpassad List.aspx sidmall för tabellen Produkter. Den använder ColumnName egenskapen för att ange sekundärnyckeln ProductCategory för filtrering av raderna Produkter.
Sidan anpassad List.aspx visar en kolumn som innehåller länkar till de kategorier som finns i kolumnen ProductCategory foreign-key. När användaren klickar på någon av dessa länkar visar sidan List.aspx endast de rader som innehåller den valda kategorin.
Exemplet kräver följande:
- En webbplats för dynamiska data. Mer information finns i Genomgång: Skapa en ny webbplats för dynamiska data med hjälp av byggnadsställningar.
- AdventureWorksLT-exempeldatabasen.
<%@ 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
Kommentarer
Klassen DynamicRouteExpression används med QueryExtender kontrollen i sidmarkeringen. Klassen DynamicRouteExpression hämtar primärnyckeln från routningsinformationen som finns i en webbbegäran. Kontrollen QueryExtender använder sedan nyckeln i en Where -sats. Detta ändrar frågan för datakällan, som sedan returnerar tabellrader filtrerade efter nyckeln.
Du kan också filtrera data med hjälp av en sekundärnyckel som du anger med hjälp av ColumnName egenskapen .
Deklarativ syntax
<asp:DynamicRouteExpression
ColumnName="Name of the foreign key column"/>
Konstruktorer
| Name | Description |
|---|---|
| DynamicRouteExpression() |
Initierar en ny instans av DynamicRouteExpression klassen. |
Egenskaper
| Name | Description |
|---|---|
| ColumnName |
Hämtar eller anger namnet på en kolumn som innehåller en sekundärnyckel som används för att fråga datakällan. |
| Context |
Hämtar instansen HttpContext av ägarkontrollen. (Ärvd från DataSourceExpression) |
| DataSource |
Hämtar datakällans objekt som är associerat med ägarkontrollen. (Ärvd från DataSourceExpression) |
| IsTrackingViewState |
Hämtar ett värde som anger om ett datakällans uttrycksobjekt spårar ändringar i visningstillståndet. (Ärvd från DataSourceExpression) |
| Owner |
Hämtar ägarkontrollen. (Ärvd från DataSourceExpression) |
| ViewState |
Hämtar en instans av StateBag klassen som innehåller aktuell information om visningstillstånd. (Ärvd från DataSourceExpression) |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetQueryable(IQueryable) |
Hämtar frågan från datakällan. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| LoadViewState(Object) |
Läser in tillståndet för värdena i objektet DataSourceExpression som måste bevaras. (Ärvd från DataSourceExpression) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| SaveViewState() |
Sparar objektets aktuella vytillstånd DataSourceExpression . (Ärvd från DataSourceExpression) |
| SetContext(Control, HttpContext, IQueryableDataSource) |
Anger HTTP-kontexten för DynamicRouteExpression objektet. |
| SetDirty() |
DataSourceExpression Markerar objektet så att dess tillstånd sparas i visningstillstånd. (Ärvd från DataSourceExpression) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| TrackViewState() |
Spårar visningstillståndsändringar för DataSourceExpression objektet så att ändringarna kan lagras i StateBag objektet för datakällans uttrycksobjekt. (Ärvd från DataSourceExpression) |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IStateManager.IsTrackingViewState |
När det implementeras av en klass får du ett värde som anger om ett objekt för datakällans uttryck spårar ändringar i visningstillståndet. (Ärvd från DataSourceExpression) |
| IStateManager.LoadViewState(Object) |
När den implementeras av en klass läser du in det tidigare sparade visningstillståndet för datakälluttrycksobjektet. (Ärvd från DataSourceExpression) |
| IStateManager.SaveViewState() |
När det implementeras av en klass sparar du objektets aktuella vytillstånd DataSourceExpression . (Ärvd från DataSourceExpression) |
| IStateManager.TrackViewState() |
När det implementeras av en klass spårar du ändringar i visningstillståndet DataSourceExpression för objektet så att ändringarna kan lagras i StateBag objektet för datakällans uttrycksobjekt. (Ärvd från DataSourceExpression) |