0

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

しかし、まだノードは選択されていません。私の腸は、それは間違った出来事だと言っています。

何か助けはありますか?

ありがとう//ジェリー

4

2 に答える 2

0

AbsolutePath と NavigateUrl は疑わしいかもしれません。1 つは相対パス (NavigateUrl) で、もう 1 つは名前が示すように絶対パスです。デバッグ モードで実行すると、2 つの値が実際に同じであることがわかりますか?

于 2011-06-11T00:13:29.840 に答える
0

うーん、これは本当に面倒です。私の質問に対する「技術的な」答えは、それがずっと機能していたということだと思います。ただし、実際の問題は、SelectedNodeStyle の ImageUrl が無視されているように見えることです。私のソリューションをもう少し貼り付けて、私が持っているものを見ることができるようにしますが、何を試しても、SelectedNodeStyle の ImageUrl は無視されます。

(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>
于 2011-06-13T15:28:08.510 に答える