ASP.Net TreeView with SiteMap ignores Node. Selected

I am creating a TreeView binding to SiteMap. It works great.

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

Now I want to change the way the selected node is displayed.

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1">
    <NodeStyle ImageUrl="~/Images/Page.png" />
    <SelectedNodeStyle ImageUrl="~/Images/Page_Hot.png" />
</asp:TreeView>

The fact is that the current page is not automatically selected in the tree (why MSFT, why?). This is not the end of the world. So, I created such a little code:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack) 
        return;

    TreeView1.TreeNodeDataBound += new TreeNodeEventHandler(TreeView1_TreeNodeDataBound);
}

void TreeView1_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
{
    var _CurrentUrl = Request.Url.AbsolutePath;
    e.Node.Selected = (e.Node.NavigateUrl == _CurrentUrl);
}

But still node is not selected. My gut tells me this is a wrong event.

Any help?

Thanks // Jerry

0
source share
2 answers

, . , "" , . , ImageUrl SelectedNodeStyle, , . , , , , , ImageUrl SelectedNodeStyle .

(PS:.Net4)

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" ShowExpandCollapse="false">
    <NodeStyle ForeColor="White" Font-Bold="true" NodeSpacing="5" HorizontalPadding="5" 
        ImageUrl="~/Images/Page.png" />
    <SelectedNodeStyle Font-Bold="true" NodeSpacing="5" HorizontalPadding="5" Font-Underline="true" 
        ImageUrl="~/Images/Page_Hot.png"/>
    <HoverNodeStyle ForeColor="Navy" />
</asp:TreeView>
0

Path NavigateUrl , (NavigateUrl), , , . , , ?

0

All Articles