ASP.NET 2.0 & SiteMapDataSource & CSS-menyer

Jag får ofta frågan om nyttan med de nya datakällskontrollerna och då framförallt SiteMapDataSource. Frågorna rör oftast denna datakällskontroll och då hur man kan använda denna för att skapa menyer som inte använder någon av de befintliga kontrollerna.

Oftast vill man skapa en "oordnad lista" (<UL>) med element i sig som sedan utseendemässigt styrs via en CSS-mall.

Finessen med de nya datakällskontrollerna är att man kan nyttja dessa som vilket DataSet som helst när de är populerade och därmed binda mot alla kontroller som kan hantera DataSet vid rendering.

Detta innebär att man kan använda sig av Repeater-kontrollen och därmed få det resultat man önskar, se exempel nedan på enklaste varianten.

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

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SiteMapDataSource1">
    <HeaderTemplate><ul></HeaderTemplate>
    <ItemTemplate><li><a href='<%# Eval("url") %>'><%# Eval("title") %></a></li></ItemTemplate>
    <FooterTemplate></ul></FooterTemplate>
</asp:Repeater>