Comment : afficher des données sitemap dans des contrôles serveur Web non hiérarchiques

Mise à jour : novembre 2007

Les données sitemap sont par essence hiérarchiques, ce qui signifie que chaque nœud peut contenir zéro ou plusieurs nœuds enfants. Les contrôles TreeView et Menu sont conçus pour fonctionner avec des données hiérarchiques. Toutefois, vous pouvez lier des données sitemap à des contrôles non hiérarchiques, tels que DropDownList, CheckBoxList et d'autres contrôles qui affichent les données dans un format linéaire, c'est-à-dire à deux dimensions.

Remarque :

Seuls le contrôle SiteMapPath et ceux qui prennent en charge l'interface INavigateUIData rendent les nœuds sitemap sous la forme de liens.

Exemple

L'exemple de code suivant utilise un contrôle DropDownList pour afficher les données sitemap d'un fichier Web.sitemap.

Lorsqu'un client sélectionne un élément dans la liste déroulante, le navigateur est redirigé vers la page sélectionnée. Pour ce faire, il appelle la méthode Redirect dans le gestionnaire d'événements OnSelectedIndexChanged.

Si cet exemple de code est placé dans une page maître, la propriété StartFromCurrentNode du contrôle SiteMapDataSource garantira que la liste déroulante affiche toujours un plan de site qui commence à la page en cours d'exécution.

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

Si la page ne contient pas de nœuds enfants, la liste déroulante est vide. Si le client sélectionne un élément pour lequel aucune propriété d'URL n'est définie dans le fichier Web.sitemap, le client est redirigé vers la page d'accueil de l'application.

Compilation du code

  • Cet exemple nécessite un fichier Web.sitemap valide qui référence la page Web ASP.NET qui contient l'exemple de code. Si vous placez cet exemple de code dans un fichier qui n'est pas répertorié dans l'un des nœuds du fichier Web.sitemap, supprimez la propriété suivante du contrôle :

    StartFromCurrentNode="true"
    

Voir aussi

Tâches

Comment : filtrer les nœuds récupérés par les contrôles serveur Web SiteMapDataSource

Concepts

Vue d'ensemble de la navigation de site ASP.NET

Plans de sites ASP.NET

Sécurisation de la navigation de site ASP.NET

Sécurisation de l'accès aux données

Autres ressources

Sécurité des applications ASP.NET dans les environnements hébergés