我创建了一个绑定到SiteMap的TreeView。它很棒。
<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);
}
但是仍未选择节点。我的直觉告诉我这是错误的事件。
任何帮助?
谢谢//杰瑞
答案 0 :(得分:0)
AbsolutePath与NavigateUrl可能是可疑的,一个是相对路径(NavigateUrl),另一个,顾名思义,是一个绝对路径。如果你在调试模式下运行,你会发现这两个值确实相同吗?
答案 1 :(得分:0)
(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>