In the Web.sitemap file (for each node you want have a separator before):
Into code:
Protected Sub Menu1_MenuItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemDataBound If e.Item.Text.IndexOf("[sep]") > 0 Then e.Item.Text = e.Item.Text.Replace("[sep]", "") e.Item.SeparatorImageUrl = Page.ResolveUrl("~/Common/images/dividerhoriz.gif") End If Try If Menu1.SelectedItem Is Nothing Then If IsNodeAncestor(CType(e.Item.DataItem, SiteMapNode), System.Web.SiteMap.CurrentNode) Then If e.Item.Selectable Then e.Item.Selected = True End If End If End If Catch ex As Exception 'Exception management End Try End Sub '''''' Determines if a ''' Theis the ancestor of a second one. ''' to analyze. ''' A which may or may not be ''' the 's child. ''' Private Function IsNodeAncestor(ByVal ancestor As SiteMapNode, ByVal child As SiteMapNode) As Boolean Dim result As Boolean = False Try If Not ancestor.ChildNodes Is Nothing AndAlso ancestor.ChildNodes.Contains(child) Then Return True Else If (Not child.ParentNode Is Nothing) AndAlso (Not ancestor Is child.RootNode) Then Return IsNodeAncestor(ancestor, child.ParentNode) End If End If Catch ex As Exception 'Exception management Return False End Try Return result End Function Protected Sub SiteMapPath1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SiteMapNodeItemEventArgs) Handles SiteMapPath1.ItemDataBound If Not e.Item.SiteMapNode Is Nothing Then If e.Item.SiteMapNode.Title.IndexOf("[sep]") >= 0 Then Try e.Item.SiteMapNode.Title = e.Item.SiteMapNode.Title.Replace("[sep]", "") Catch 'Exception management End Try End If End If End Sub true , if the two nodes are related,false otherwise.
No comments:
Post a Comment