Gewusst wie: Anzeigen von Siteübersichtsdaten in nicht hierarchischen Webserversteuerelementen
Aktualisiert: November 2007
Siteübersichtsdaten weisen naturgemäß eine hierarchische Struktur auf. Demnach kann jeder Knoten 0 (null) oder mehr untergeordnete Knoten enthalten. Das TreeView-Steuerelement und das Menu-Steuerelement wurden für die Arbeit mit hierarchischen Daten konzipiert. Sie können jedoch Siteübersichtsdaten auch an nicht hierarchische Steuerelemente binden, wie etwa das DropDownList-Steuerelement, das CheckBoxList-Steuerelement und andere Steuerelemente, die Daten linear oder in einem flachen Format anzeigen.
Hinweis: |
---|
Nur das SiteMapPath-Steuerelement und Steuerelemente, die die INavigateUIData-Schnittstelle unterstützen, rendern Siteübersichtsknoten als Links. |
Beispiel
Im folgenden Codebeispiel werden die Siteübersichtsdaten aus der Datei Web.sitemap mithilfe eines DropDownList-Steuerelements angezeigt.
Wenn ein Client ein Element aus der Dropdownliste auswählt, wird der Browser auf die gewählte Seite umgeleitet. Dies geschieht durch Aufruf der Redirect-Methode im OnSelectedIndexChanged-Ereignishandler.
Wenn dieses Codebeispiel in eine Masterseite eingefügt wird, wird mittels der StartFromCurrentNode-Eigenschaft des SiteMapDataSource-Steuerelements gewährleistet, dass die Dropdownliste immer eine Siteübersicht anzeigt, die mit der aktuell ausgeführten Seite beginnt.
<%@ 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>
Wenn die Seite keine untergeordneten Knoten enthält, bleibt die Dropdownliste leer. Wenn der Client ein Element auswählt, für das in der Datei Web.sitemap keine URL-Eigenschaft festgelegt ist, wird der Client auf die Startseite der Anwendung umgeleitet.
Kompilieren des Codes
Für dieses Beispiel ist eine gültige Web.sitemap-Datei erforderlich, die auf die das Codebeispiel enthaltende ASP.NET-Webseite verweist. Wenn Sie diesen Beispielcode in eine Datei einfügen, die nicht in einem der Knoten der Datei Web.sitemap aufgeführt ist, entfernen Sie die folgende Eigenschaft aus dem Steuerelement:
StartFromCurrentNode="true"
Siehe auch
Aufgaben
Gewusst wie: Filtern der von SiteMapDataSource-Webserversteuerelementen abgerufenen Knoten
Konzepte
Übersicht über die ASP.NET-Sitenavigation
Sichern der ASP.NET-Sitenavigation