|
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 Object, ByVal 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 |
Please
Sign In
to rate this article.