2011-05-19 61 views
2

如何突出显示ASP.NET中选定的TreeNode(UI.WebControls)?目的是让用户看到他或她正在查看哪个类别。突出显示选定的TreeNode

我的想法是,在每个TreeNode上,检查其属性Selected是否为true,然后将其字体或其他颜色更改为另一种颜色。我已阅读了关于设置“ForeColor”的消息,但似乎并不存在这种类型的TreeNode。

另一个想法是为每个节点添加某种JavaScript。

只是作为一个例子,这是代码看起来像今天:

private void BuildTree() 
    { 
     TreeNode nodeNew = new TreeNode("Unread", MessageFolder.New.ToString()); 

     TreeNode nodeProcessed = new TreeNode("Read", MessageFolder.Processed.ToString()); 

     TreeViewFolders.Nodes.Add(nodeNew); 
     TreeViewFolders.Nodes.Add(nodeProcessed); 
    } 

回答

5

您有对ASPX页面的服务器控制工作,你可以指定

<asp:TreeView id="LinksTreeView" 
      Font-Names= "Arial" 
      ForeColor="Blue" 
      SelectedNodeStyle-ForeColor="Green" 
      SelectedNodeStyle-VerticalPadding="0" 
      OnSelectedNodeChanged="Select_Change" 
      runat="server"> 

尝试这和更多的信息检查this page

1

接下来是一种方法来解决ASP.NET 4.0与Web窗体,在母版页中的问题。

在展示页面,你可以有一个TreeView如以下几点:

<asp:TreeView 
    ID="tv" 
    runat="server" 
    SelectedNodeStyle-BorderStyle="Solid" 
    SelectedNodeStyle-HorizontalPadding="5" 
    SelectedNodeStyle-VerticalPadding="5" 
    onselectednodechanged="tv_SelectedNodeChanged"> 
    <Nodes> 
     <asp:TreeNode Text="Contact" Value="~/General/Contact.aspx"></asp:TreeNode> 
     <asp:TreeNode Text="Change login name" Value="~/General/ChangeLoginName.aspx"></asp:TreeNode> 
     <asp:TreeNode Text="Change password" Value="~/General/ChangePassword.aspx"></asp:TreeNode> 
     <asp:TreeNode Text="Terms and Policies" Value="~/General/TermsOfUse.aspx"></asp:TreeNode> 
    </Nodes> 
</asp:TreeView></td> 

重要的事情这里需要注意的是:

(1)用于导航的URL被分配到“值”属性,而不是TreeNode类的“NavigateUrl”属性。

(2)我们为所选节点定义了样式。 (3)我们定义了一个事件,“onselectednodechanged”。一个简单的方法是在Design View中双击TreeView。这也会在代码隐藏文件中创建一个事件处理程序存根,我们将在稍后使用它。

在代码隐藏文件,以下三个功能是所有需要:

protected void HighlightSelectedLink(TreeNodeCollection nodes, string treeViewSelectedValue) 
{ 
    if (!string.IsNullOrEmpty(treeViewSelectedValue)) 
    { 
     foreach (TreeNode tn in nodes) 
     { 
      if (tn.Value == treeViewSelectedValue) 
      { 
       tn.Selected = true; 
      } 
      else 
      { 
       tn.Selected = false; 
      } 

      HighlightSelectedLink(tn.ChildNodes, treeViewSelectedValue); 
     } 
    } 
} 

protected void tv_SelectedNodeChanged(object sender, EventArgs e) 
{ 
    string treeViewSelectedValue = tv.SelectedValue; 

    if (treeViewSelectedValue.EndsWith(".aspx")) 
    { 
     Response.BufferOutput = true; 
     Response.Redirect(tv.SelectedValue); 
    } 
} 

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    string treeViewSelectedValue = Request.AppRelativeCurrentExecutionFilePath; 

    if (!string.IsNullOrEmpty(treeViewSelectedValue)) 
    { 
     TreeNodeCollection nodes = tv.Nodes; 
     HighlightSelectedLink(nodes, treeViewSelectedValue); 
    } 
} 

第二功能是上述处理程序。

0

在后面的C#代码:

protected void tv_SelectedNodeChanged(object sender, EventArgs e) 
{ 
    TreeView tv = (TreeView)sender; 
    tv.SelectedNodeStyle.ForeColor = System.Drawing.Color.MidnightBlue; 
    tv.SelectedNodeStyle.BackColor = System.Drawing.Color.PowderBlue; 
    tv.SelectedNodeStyle.Font.Bold = true; 
}