Практическое руководство. Отображение данных карты веб-узла в неиерархических серверных веб-элементах управления
Обновлен: Ноябрь 2007
Данные карты веб-узла изначально являются иерархическими, то есть каждый узел может содержать ноль или более дочерних узлов. Элементы управления TreeView и Menu предназначены для работы иерархическими данными. В то же время данные карты веб-узла можно привязать к неиерархическим элементами управления, например к DropDownList, CheckBoxList и другим элементам, отображающим данные в плоском линейном формате.
Примечание. |
---|
Только элемент управления SiteMapPath и элементы управления, поддерживающие интерфейс INavigateUIData, отображают узлы карты веб-узла в виде ссылок. |
Пример
Следующий пример кода использует элемент управления DropDownList для отображения данных карты веб-узла из файла Web.sitemap.
Когда клиент выбирает элемент в раскрывающемся списке, веб-обозреватель перенаправляется на выбранную страницу. Это достигается путем вызова метода Redirect в обработчике событий OnSelectedIndexChanged.
Если поместить этот пример кода на главную страницу, то свойство StartFromCurrentNode в элементе управления SiteMapDataSource будет отслеживать, чтобы раскрывающийся список всегда отображал карту веб-узла, начинающуюся на странице, выполняемой в данный момент.
<%@ 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 runat="server">
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 runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<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 runat="server">
void _OnSelectedIndexChanged(Object sender, EventArgs e)
{
Response.Redirect(DropDownList1.SelectedItem.Value);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DropDownList Bound to SiteMapDataSource</title>
</head>
<body>
<form id="form1" runat="server">
<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-адреса, то он перенаправляется на домашнюю страницу приложения.
Компиляция кода
Для следующего примера требуется файл Web.sitemap, который ссылается на веб-страницу ASP.NET, содержащую данный пример кода. Если этот пример кода необходимо поместить в файл, не указанный в узле файла Web.sitemap, удалите из элемента управления следующее свойство:
StartFromCurrentNode="true"
См. также
Задачи
Основные понятия
Общие сведения об структуре переходов веб-узла ASP.NET
Безопасность системы навигации веб-узла ASP.NET