ASP.Net TreeView с SiteMap игнорирует Node.Selected - PullRequest
0 голосов
/ 11 июня 2011

Я создаю TreeView, привязанный к SiteMap. Отлично работает.

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

Теперь я хочу изменить внешний вид выбранного узла.

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

Дело в том, что текущая страница не выбирается автоматически в дереве (почему MSFT, почему?). Это не конец света. Итак, я создал небольшой код, подобный этому:

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

Но все равно узел не выбран. Моя интуиция говорит мне, что это неправильное событие.

Любая помощь?

Спасибо // Джерри

Ответы [ 2 ]

0 голосов
/ 13 июня 2011

Ну, это действительно раздражает.Я полагаю, что «технический» ответ на мой вопрос заключается в том, что он работал все время.Однако реальная проблема заключается в том, что 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 голосов
/ 11 июня 2011

AbsolutePath и NavigateUrl могут быть подозрительными, один относительный путь (NavigateUrl), а другой, как следует из названия, является абсолютным путем.Если вы работаете в режиме отладки, видите ли вы, что эти два значения действительно одинаковы?

...