Como: Exibir dados de um MAP de site em controles de servidor Web não hierárquicos
Dados de mapa de sites são inerentemente hierárquicos, o que significa que cada nó pode conter zero ou mais nós filho.Os controles TreeView e Menu são projetados para trabalhar com dados hierárquicos.No entanto, você pode vincular dados de mapa de sites a controles não hierárquico, como o DropDownList, CheckBoxList e outros controles que exibem dados em um formato linear, ou simples.
Observação: |
---|
Somente o controle SiteMapPath e controles que suportam a interface INavigateUIData renderização nós do mapa do site como links. |
Exemplo
O exemplo de código a seguir usa um controle DropDownList para exibir os dados do mapa do site de um arquivo Web.sitemap.
Quando um cliente seleciona um item na lista suspensa, o navegador é redirecionado à página selecionada.Isso é feito chamando o método Redirect no manipulador de eventos OnSelectedIndexChanged.
Se este exemplo de código é colocado em um página mestra, então, a propriedade StartFromCurrentNode no controle SiteMapDataSource garantirá que a lista suspensa sempre exiba uma mapa do site que comece na página atualmente em execução.
<%@ 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>
Se a página não contiver nenhum nó filho, então a lista suspensa estará vazia.Se o cliente seleciona um item para o qual não há nenhuma propriedade URL definida no arquivo Web.sitemap, então o cliente é redirecionado para o home page do aplicativo.
Compilando o código
Esse exemplo requer um arquivo Web.sitemap válido que faz referência a página ASP.NET da Web que contém o exemplo de código.Se você colocar esse exemplo de código em um arquivo que não esteja listado em um de nós o arquivo Web.sitemap, remova a seguinte propriedade do controle:
StartFromCurrentNode="true"
Consulte também
Tarefas
Como: Filtrar os nós recuperados por controles de servidor Web SiteMapDataSource
Conceitos
Visão geral sobre navegação em sites do ASP.NET
Tornando navegação em sites do ASP.NET seguro