Community & Support

How to expand disabled node

Article Info

Rating: Not rated


Article information

Article relates to

 RadTreeView for ASP.NET AJAX

 Telerik.Web.UI v2008.1.x

Created by

 Veskoni, Telerik

Last modified by

 Veskoni, Telerik



HOW-TO
Have a disabled node which can be expanded and collapsed, but not clicked.

DESCRIPTION
Disabled nodes cannot be selected, expanded and collapsed by design. Sometimes you might need a node which looks like disabled, cannot be selected, but still be expandable and collapsible.

SOLUTION
To achieve the task we will leave the node enabled, but we will add an additional CSS class ("rtDisabled") to its parentElement. To prevent selecting that node we will subscribe to the OnClientNodeClicking event and cancel the event if that node is clicked. We will distinguish the "disabled" nodes from the other nodes by their Category.

[ASPX]
<telerik:RadTreeView ID="RadTreeView1"  
    OnClientNodeClicking="OnClientNodeClickingHandler" 
    runat="server"
    <Nodes> 
        <telerik:RadTreeNode runat="server" Text="Root RadTreeNode1"  
            Category="Disabled"
            <Nodes> 
                <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 1"
                </telerik:RadTreeNode> 
                <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 2"
                </telerik:RadTreeNode> 
            </Nodes>
        </telerik:RadTreeNode>                    
    </Nodes> 
</telerik:RadTreeView> 

[Javascript]
<script type="text/javascript"
function pageLoad() 
    var tree = $find("<%= RadTreeView1.ClientID %>"); 
    var nodes = tree.get_allNodes(); 
     
    for (var i = 0; i < nodes.length; i++) 
    { 
        var node = nodes[i]; 
        if (node.get_category() == "Disabled"
        {    
            node.get_textElement().parentElement.className += " rtDisabled"
        }             
    }         
 
function OnClientNodeClickingHandler(sender, eventArgs) 
    var node = eventArgs.get_node(); 
    if (node.get_category() == "Disabled"
    { 
        eventArgs.set_cancel(true); 
    } 
</script> 

Here is how to add "disabled" nodes from the code-behind

[C#]
protected void Page_Load(object sender, EventArgs e) 
    if (!IsPostBack) 
    { 
        RadTreeNode root = new RadTreeNode("root node"); 
        root.CssClass += " rtDisabled"
        root.Category = "Disabled"
 
        RadTreeNode child = new RadTreeNode("child"); 
        root.Nodes.Add(child); 
        RadTreeView1.Nodes.Add(root); 
    } 

[VB]
Protected Sub Page_Load(ByVal sender As ObjectByVal e As EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
        Dim root As New RadTreeNode("root node"
        root.CssClass += " rtDisabled" 
        root.Category = "Disabled" 
 
        Dim child As New RadTreeNode("child"
        root.Nodes.Add(child) 
        RadTreeView1.Nodes.Add(root) 
    End If 
End Sub 


Comments

There are no comments yet.
If you'd like to comment on this KB article, please, send us a Support Ticket.
Thank you!

Please Sign In to rate this article.