다음을 통해 공유


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

예제

소스 코드를 사용 하 여 Visual Studio 프로젝트는 다음이 항목과 함께 사용할 수 있습니다: 동적 데이터 스 캐 폴딩합니다.

다음 예에서는 Products 테이블에 대 한 사용자 지정 List.aspx 페이지가 템플릿을 보여 줍니다. 사용 된 ColumnName 제품 행을 필터링 하는 것에 대 한 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"/>  

생성자

DynamicRouteExpression()

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

속성

ColumnName

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

Context

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

(다음에서 상속됨 DataSourceExpression)
DataSource

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

(다음에서 상속됨 DataSourceExpression)
IsTrackingViewState

데이터 소스 식 개체에서 해당 뷰 상태의 변경 내용을 추적하는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DataSourceExpression)
Owner

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

(다음에서 상속됨 DataSourceExpression)
ViewState

현재 뷰 상태 정보가 들어 있는 StateBag 클래스의 인스턴스를 가져옵니다.

(다음에서 상속됨 DataSourceExpression)

메서드

Equals(Object)

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

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

기본 해시 함수로 작동합니다.

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

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

GetType()

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

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

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

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

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

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

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

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

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

SetDirty()

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

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

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

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

DataSourceExpression 개체의 뷰 상태 변경 내용이 해당 데이터 소스 식 개체의 StateBag 개체에 저장될 수 있도록 추적합니다.

(다음에서 상속됨 DataSourceExpression)

명시적 인터페이스 구현

IStateManager.IsTrackingViewState

클래스에서 구현될 때 데이터 소스 식 개체에서 해당 뷰 상태의 변경 내용을 추적하는지 여부를 나타내는 값을 가져옵니다.

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

클래스에서 구현될 때 이전에 저장한 데이터 소스 식 개체의 뷰 상태를 로드합니다.

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

클래스에서 구현될 때 DataSourceExpression 개체의 현재 뷰 상태를 저장합니다.

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

클래스에서 구현될 때 DataSourceExpression 개체의 뷰 상태 변경 내용이 해당 데이터 소스 식 개체의 StateBag 개체에 저장될 수 있도록 추적합니다.

(다음에서 상속됨 DataSourceExpression)

적용 대상