다음을 통해 공유


DynamicRouteExpression 클래스

정의

데이터 필터링을 수행하기 위해 라우팅 정보에서 기본 키를 가져옵니다.

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
상속
DynamicRouteExpression

예제

다음 예제에서는 Products 테이블에 대한 사용자 지정 List.aspx 페이지 템플릿을 보여 줍니다. 이 속성은 ColumnName Products 행을 필터링하기 위한 ProductCategory 외래 키를 지정하는 데 사용됩니다.

사용자 지정 List.aspx 페이지에는 ProductCategory 외래 키 열에 포함된 범주의 링크가 포함된 열이 표시됩니다. 사용자가 이러한 링크 중 하나를 클릭하면 List.aspx 페이지에 선택한 범주가 포함된 행만 표시됩니다.

이 예제에는 다음이 필요합니다.

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

설명

클래스는 DynamicRouteExpression 페이지 태그의 QueryExtender 컨트롤과 함께 사용됩니다. 클래스는 DynamicRouteExpression 웹 요청에 포함된 라우팅 정보에서 기본 키를 가져옵니다. 그런 다음 컨트롤은 QueryExtender 절의 Where 키를 사용합니다. 데이터 원본에 대한 쿼리를 수정한 다음 키로 필터링된 테이블 행을 반환합니다.

속성을 사용하여 지정한 외래 키를 사용하여 데이터를 필터링할 ColumnName 수도 있습니다.

선언적 구문

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

생성자

Name Description
DynamicRouteExpression()

DynamicRouteExpression 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
ColumnName

데이터 원본을 쿼리하는 데 사용되는 외래 키가 포함된 열의 이름을 가져오거나 설정합니다.

Context

소유자 컨트롤의 HttpContext 인스턴스를 가져옵니다.

(다음에서 상속됨 DataSourceExpression)
DataSource

소유자 컨트롤과 연결된 데이터 원본 개체를 가져옵니다.

(다음에서 상속됨 DataSourceExpression)
IsTrackingViewState

데이터 원본 식 개체가 뷰 상태 변경 내용을 추적하고 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DataSourceExpression)
Owner

소유자 컨트롤을 가져옵니다.

(다음에서 상속됨 DataSourceExpression)
ViewState

현재 뷰 상태 정보를 포함하는 클래스의 StateBag 인스턴스를 가져옵니다.

(다음에서 상속됨 DataSourceExpression)

메서드

Name Description
Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetQueryable(IQueryable)

데이터 원본에서 쿼리를 가져옵니다.

GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
LoadViewState(Object)

지속해야 하는 개체의 값 DataSourceExpression 상태를 로드합니다.

(다음에서 상속됨 DataSourceExpression)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
SaveViewState()

개체의 현재 뷰 상태를 DataSourceExpression 저장합니다.

(다음에서 상속됨 DataSourceExpression)
SetContext(Control, HttpContext, IQueryableDataSource)

개체의 HTTP 컨텍스트를 DynamicRouteExpression 설정합니다.

SetDirty()

개체의 DataSourceExpression 상태가 뷰 상태에 저장되도록 개체를 표시합니다.

(다음에서 상속됨 DataSourceExpression)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
TrackViewState()

변경 내용을 데이터 원본 식 개체의 DataSourceExpression 개체에 저장할 수 있도록 개체의 StateBag 뷰 상태 변경 내용을 추적합니다.

(다음에서 상속됨 DataSourceExpression)

명시적 인터페이스 구현

Name Description
IStateManager.IsTrackingViewState

클래스에서 구현되는 경우 데이터 원본 식 개체가 뷰 상태 변경 내용을 추적하고 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DataSourceExpression)
IStateManager.LoadViewState(Object)

클래스에서 구현되는 경우 데이터 원본 식 개체의 이전에 저장된 뷰 상태를 로드합니다.

(다음에서 상속됨 DataSourceExpression)
IStateManager.SaveViewState()

클래스에서 구현되는 경우 개체의 DataSourceExpression 현재 뷰 상태를 저장합니다.

(다음에서 상속됨 DataSourceExpression)
IStateManager.TrackViewState()

클래스에서 구현되는 경우 변경 내용을 데이터 원본 식 개체의 DataSourceExpression 개체에 저장할 수 있도록 개체의 StateBag 뷰 상태 변경 내용을 추적합니다.

(다음에서 상속됨 DataSourceExpression)

적용 대상