/ / ASP.Net TreeView avec SiteMap ignore Node.Selected - asp.net, treeview, sitemap, selected, treenode

ASP.Net TreeView avec SiteMap ignore Node.Selected - asp.net, treeview, sitemap, selected, treenode

Je crée un TreeView lié à un SiteMap. Ça marche très bien.

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

Maintenant, je veux changer l'apparence du nœud sélectionné.

<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>

Le problème, c’est que la page en cours n’est pas automatiquement sélectionnée dans l’arbre (pourquoi MSFT, pourquoi?). Ce n'est pas la fin du monde. Donc, j'ai créé un petit code derrière comme ceci:

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);
}

Mais le noeud n'est toujours pas sélectionné. Mon instinct me dit que c’est le mauvais événement.

De l'aide?

Merci // Jerry

Réponses:

0 pour la réponse № 1

AbsolutePath vs the NavigateUrl pourrait êtresuspect, l’un est un chemin relatif (NavigateUrl) et l’autre, comme son nom l’indique, est un chemin absolu. Si vous exécutez en mode débogage, pouvez-vous constater que les deux valeurs sont effectivement identiques?


0 pour la réponse № 2

Eh bien, c'est vraiment énervant. Je suppose que la réponse "technique" à ma question est que cela a fonctionné tout le temps. Cependant, le vrai problème est que ImageUrl dans SelectedNodeStyle semble être ignoré. Je vais coller un peu plus de ma solution pour que vous puissiez voir ce que j'ai, mais peu importe ce que j'essaie, ImageUrl dans SelectedNodeStyle est ignoré.

(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>