Question

Ok, so I'm building bread crumbs and depending on the value of the breadcrumb an image will be the seperator. So "HOME" will have one image and "SEARCH" will have another.

I know I can do this programatically (at least I ASSUME) but is there an easier way to do this? Can I link an image to a node based on the value of the node? Can I do it with PathSeparatorTemplate?

Thank you.

Was it helpful?

Solution

I see you have already accepted an answer, but I thought some code would help, so here is some:

Site1.Master


    <asp:SiteMapPath ID="SiteMapPath1" Runat="server" OnItemDataBound="Item_Bound">
        <PathSeparatorTemplate>
            <asp:Image ID="SepImage" runat="server" ImageUrl="/images"/>
        </PathSeparatorTemplate>
    </asp:SiteMapPath>

Site1.Master.cs


    private string lastItemKey = "";
    public void Item_Bound(Object sender, SiteMapNodeItemEventArgs e)
    {
        if (e.Item.ItemType == SiteMapNodeItemType.PathSeparator)
        {
            string imageUrl = ((Image) e.Item.Controls[1]).ImageUrl;
            imageUrl += lastItemKey + ".png";
            ((Image) e.Item.Controls[1]).ImageUrl = imageUrl;
        }
        else
        {
            lastItemKey = e.Item.SiteMapNode.Key;
        }
    }

Then I have an /images directory containing an image for each of the Key's of the SiteMapNodes. In other terms: this code will result in the image being displayed, after each of the path nodes, to depend on the key of the node before it.

Hope this helps someone.

OTHER TIPS

You can put an

<asp:Image ... />

into the PathSerparatorTemplate but you still have to set the image url from code.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top