Share via


DynamicRouteExpression Kelas

Definisi

Mendapatkan kunci primer dari informasi perutean untuk melakukan pemfilteran data.

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
Warisan
DynamicRouteExpression

Contoh

Proyek Visual Studio dengan kode sumber tersedia untuk menyertai topik ini: Merancang Data Dinamis.

Contoh berikut ini memperlihatkan templat halaman List.aspx kustom untuk tabel Produk. Ini menggunakan ColumnName properti untuk menentukan kunci asing ProductCategory untuk memfilter baris Produk.

Halaman List.aspx kustom menampilkan kolom yang berisi tautan kategori yang dimuat oleh kolom kunci asing ProductCategory. Saat pengguna mengklik salah satu tautan ini, halaman List.aspx hanya menampilkan baris yang berisi kategori yang dipilih.

Contohnya memerlukan hal berikut:

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

Keterangan

Kelas DynamicRouteExpression digunakan dengan QueryExtender kontrol di markup halaman. Kelas DynamicRouteExpression mendapatkan kunci primer dari informasi perutean yang terkandung dalam permintaan Web. Kontrol QueryExtender kemudian menggunakan kunci dalam Where klausa. Ini memodifikasi kueri untuk sumber data, yang kemudian mengembalikan baris tabel yang difilter oleh kunci.

Anda juga dapat memfilter data dengan menggunakan kunci asing yang Anda tentukan menggunakan ColumnName properti .

Sintaks Deklaratif

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

Konstruktor

DynamicRouteExpression()

Menginisialisasi instans baru kelas DynamicRouteExpression.

Properti

ColumnName

Mendapatkan atau mengatur nama kolom yang berisi kunci asing yang digunakan untuk mengkueri sumber data.

Context

Mendapatkan instans HttpContext kontrol pemilik.

(Diperoleh dari DataSourceExpression)
DataSource

Mendapatkan objek sumber data yang terkait dengan kontrol pemilik.

(Diperoleh dari DataSourceExpression)
IsTrackingViewState

Mendapatkan nilai yang menunjukkan apakah objek ekspresi sumber data melacak perubahan status tampilannya.

(Diperoleh dari DataSourceExpression)
Owner

Mendapatkan kontrol pemilik.

(Diperoleh dari DataSourceExpression)
ViewState

Mendapatkan instans StateBag kelas yang berisi informasi status tampilan saat ini.

(Diperoleh dari DataSourceExpression)

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetQueryable(IQueryable)

Mendapatkan kueri dari sumber data.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
LoadViewState(Object)

Memuat status nilai dalam DataSourceExpression objek yang harus dipertahankan.

(Diperoleh dari DataSourceExpression)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
SaveViewState()

Menyimpan status DataSourceExpression tampilan objek saat ini.

(Diperoleh dari DataSourceExpression)
SetContext(Control, HttpContext, IQueryableDataSource)

Mengatur konteks DynamicRouteExpression HTTP objek.

SetDirty()

DataSourceExpression Menandai objek sehingga statusnya akan disimpan dalam status tampilan.

(Diperoleh dari DataSourceExpression)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
TrackViewState()

Melacak perubahan DataSourceExpression status tampilan objek sehingga perubahan dapat disimpan dalam StateBag objek untuk objek ekspresi sumber data.

(Diperoleh dari DataSourceExpression)

Implementasi Antarmuka Eksplisit

IStateManager.IsTrackingViewState

Saat diimplementasikan oleh kelas, mendapatkan nilai yang menunjukkan apakah objek ekspresi sumber data melacak perubahan status tampilannya.

(Diperoleh dari DataSourceExpression)
IStateManager.LoadViewState(Object)

Saat diimplementasikan oleh kelas, memuat status tampilan objek ekspresi sumber data yang disimpan sebelumnya.

(Diperoleh dari DataSourceExpression)
IStateManager.SaveViewState()

Saat diimplementasikan oleh kelas, menyimpan status DataSourceExpression tampilan objek saat ini.

(Diperoleh dari DataSourceExpression)
IStateManager.TrackViewState()

Saat diimplementasikan oleh kelas, melacak perubahan DataSourceExpression status tampilan objek sehingga perubahan dapat disimpan dalam StateBag objek untuk objek ekspresi sumber data.

(Diperoleh dari DataSourceExpression)

Berlaku untuk