2011-05-19 60 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; 
}