Let’s say you’re using Infrafitics WebDataTree’s server-side SelectionChanged
event to perform some action when user selects a tree node. Now let’s say there’re times when you need to disable tree-selection (for example another control, e.g. WebDataGrid is being updated and clicking tree node during update will mess things up). Also you need to do it in client-side JavaScript (e.g. if that second control is inside of UpdatePanel – server-side updates will not affect controls outside the panel).
What to do? WebDataTree doesn’t have CSOM set_enabled()
method and if you use client-side DOM’s:
$find('xMyTree').get_element().setAttribute('disabled','true');
tree may take appearance of being disabled in some browsers, but user can still select nodes.
Fortunately there is a solution (thanks Bhadresh from Infragisitcs techsupport for suggesting it). WebDataTree has SelectionType
property (0 = None, 1 = Single, 2 = Multiple) that controls how many nodes can be selected in the tree. It also has a counterpart in client-side JavaScript set_selectionType()
, so in order to disable selection simple use command
$find('xMyTree').set_selectionType(0);
Later on selection can be re-enabled either by passing 1
to above function or even server-side by calling
xMyTree.SelectionType = NavigationControls.NodeSelectionTypes.Single