DevTrain .NET Developers Home. Das Community Portal für ASP.NET, Visual Basic, C#
 
  Login Status: Hallo   Anmelden  Suche:  
Navigationslinks überspringen
Startseite
Artikel
Blogs
Foren
ClubClub erweitern

 
Ihre Optionen
Save
Mail
Print
Rate
 
Advertising
  SharePoint konferenz vom 24.-25. Februar 2010 im ehem. IMAX München

 
Navigationslinks überspringen
Autor:Hannes Preishuber

zusätzliche Attribute aus Web.Sitemap auswerten

Eine Sitmap Datei dient als Steuerung der Navigation einer Web Page. Zur visualisierung kommt dann ein Menü oder Treeview Steuerelement zum Einsatz. Die Bindung wird über das SitemapDataSource Control hergestellt.

Eine Sitemap Datei enthält Elemente wie URL, Title oder Description. Die Frage ist allerdings, wie kann man zusätzliche Attribute verwenden um z.B. das Aussehen des Menüs per web.sitemap zu steuern. Hier in diesem Beispiel soll die Schriftfarbe aus der Sitemap Datei mit dem frei erfundenen Attribut Farbe definiert werden.

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

<siteMapNode url="home.aspx" title="home" description="" farbe="red">

<siteMapNode url="eins.aspx" title="eins" description="" farbe="silver" />

<siteMapNode url="zwei.aspx" title="zwei" description="" farbe="green" />

</siteMapNode>

</siteMap>

Die ASPX Seite enhält dann folgenden Code

<form id="form1" runat="server">

<div>

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

</div>

<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1"

OnMenuItemDataBound="Menu1_MenuItemDataBound" Orientation="Horizontal" StaticDisplayLevels="2">

</asp:Menu>

</form>

So und nun zum spannenden Teil. Jedesmal wenn ein neuer Node des Menüs erzeugt wird, wird auch das Ereignis MenuitemDataBound ausgeführt. Dort kann man per Dataitem auf die Daten und den Node aus der Sitemap zugreifen. Ausserdem kann man per e.Item auf den Node des Menüs zugreifen und so den Text manipulieren. Hier wurde nicht besonders schön aber kreativ einfach statt dem Text eine HTML Element zusammengebaut das die Schriftfarbe abbildet.

Protected Sub Menu1_MenuItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs)

Dim node As SiteMapNode = CType(e.Item.DataItem, SiteMapNode)

e.Item.Text = "<font color=" + node("farbe") + ">" + e.Item.Text + "</font>"

End Sub


Diskutieren Sie in den Foren

DevTrain Camp – Schneller zum .NET 4.0 Developer!