我有一个项目,我有几页。在我的母版页上,我有一个用于导航的树视图。树视图链接到站点地图文件。
节点是这样构建的:
--Node(不可见)
-----NavPoint1
-----NavPoint2
-----NavPoint3
所以基本上我已经使第一个节点不可见,所以只有它的叶节点是可见的。现在我有不同的用户角色:管理员、用户、访客等。对于其中一个菜单项,只有当管理员访问它时,视图才会有所不同。为此,我想为树节点实现一个 selectednodechanged 事件。但是它似乎没有开火,我不知道我做错了什么。
这是我对母版页中站点的树节点的标记:
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="SiteMapDataSource1" NodeIndent="10" ImageSet="Simple"x OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
<HoverNodeStyle Font-Underline="False" Font-Bold="true" />
<NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="0px" NodeSpacing="0px" VerticalPadding="0px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle Font-Bold="true" HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
这是我的站点地图文件:
<siteMapNode url="" title="" description="">
<siteMapNode url="Default.aspx" title="Home" description="" />
<siteMapNode url="PersoenlicherKalender.aspx" title="Persönlicher Kalender" />
<siteMapNode url="Gruppenkalender.aspx" title="Gruppenkalender"/>
<siteMapNode url="DatenAendern.aspx" title="Daten ändern"/>
</siteMapNode>
这是我处理事件的方法:
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
if (TreeView1.SelectedNode == TreeView1.Nodes[3])
{
if (Session["Benutzerart"] == Enums.BenutzerTypen.Benutzer.Administrator.ToString())
{ lblUser.Text = "Erfolg!"; }
}
}
我也愿意使用另一个控件,这似乎比它应该的要难一点......