방법: 비계층적 웹 서버 컨트롤에서 사이트 맵 데이터 표시
업데이트: 2007년 11월
사이트 맵 데이터는 기본적으로 계층적입니다. 즉, 각 노드에 0개 이상의 자식 노드가 포함될 수 있습니다. TreeView 및 Menu 컨트롤은 계층적 데이터와 함께 사용하도록 디자인되었습니다. 그러나 DropDownList, CheckBoxList 및 선형 또는 평면 형식으로 데이터를 표시하는 다른 컨트롤 등의 비계층적 컨트롤에도 사이트 맵 데이터를 바인딩할 수 있습니다.
참고: |
---|
SiteMapPath 컨트롤과 INavigateUIData 인터페이스를 지원하는 컨트롤에서만 사이트 맵 노드를 링크로 렌더링합니다. |
예제
다음 코드 예제에서는 DropDownList 컨트롤을 사용하여 Web.sitemap 파일의 사이트 맵 데이터를 표시합니다.
클라이언트에서 드롭다운 목록의 항목을 선택하면 브라우저가 선택된 페이지로 리디렉션됩니다. 이 작업을 수행하기 위해 OnSelectedIndexChanged 이벤트 처리기의 Redirect 메서드가 호출됩니다.
이 코드 예제를 마스터 페이지에 삽입하면 SiteMapDataSource 컨트롤의 StartFromCurrentNode 속성으로 인해 항상 현재 실행 중인 페이지에서 시작되는 사이트 맵이 드롭다운 목록에 표시됩니다.
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
Public Sub _OnSelectedIndexChanged(ByVal Sender As Object, ByVal e As EventArgs)
Response.Redirect(DropDownList1.SelectedItem.Value)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>Untitled Page</title>
</head>
<body>
<form id="form1" >
<div>
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
StartFromCurrentNode="true"
ShowStartingNode="false" />
<asp:DropDownList ID="DropDownList1" Runat="Server"
DataSourceID="SiteMapDataSource1"
AutoPostBack="True"
DataTextField="Title"
DataValueField="Url"
OnSelectedIndexChanged="_OnSelectedIndexChanged" >
</asp:DropDownList>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
void _OnSelectedIndexChanged(Object sender, EventArgs e)
{
Response.Redirect(DropDownList1.SelectedItem.Value);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>DropDownList Bound to SiteMapDataSource</title>
</head>
<body>
<form id="form1" >
<div>
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
StartFromCurrentNode="true"
ShowStartingNode="false" />
<asp:DropDownList ID="DropDownList1" Runat="Server"
DataSourceID="SiteMapDataSource1"
AutoPostBack="True"
DataTextField="Title"
DataValueField="Url"
OnSelectedIndexChanged="_OnSelectedIndexChanged" >
</asp:DropDownList>
</div>
</form>
</body>
</html>
페이지에 자식 노드가 없으면 드롭다운 목록은 비어 있습니다. 클라이언트에서 Web.sitemap 파일에 설정된 URL 속성이 없는 항목을 선택하면 클라이언트가 응용 프로그램의 홈 페이지로 리디렉션됩니다.
코드 컴파일
이 예제에는 코드 예제가 포함된 ASP.NET 웹 페이지를 참조하는 유효한 Web.sitemap 파일이 필요합니다. Web.sitemap 파일의 노드 중 하나에 나열되지 않은 파일에 이 예제 코드를 넣은 경우 컨트롤에서 다음 속성을 제거합니다.
StartFromCurrentNode="true"
참고 항목
작업
방법: SiteMapDataSource 웹 서버 컨트롤로 검색되는 노드 필터링