This is a migrated thread and some comments may be shown as answers.

Enable Disable Child Controls

1 Answer 175 Views
TreeView
This is a migrated thread and some comments may be shown as answers.
Thomas Kristensen
Top achievements
Rank 1
Thomas Kristensen asked on 16 Apr 2009, 10:49 AM
Hi

I am having a case, we want to disable, enable child controls client side  that have been added to a tree node server side.

However using the javascript enable & disable function of the node only works for the node itself, and not its childs, as it is the case for server side. How does one set this property for a child control to a treenode?
 
For example if I have added a combobox to a tree node and want to disable that combo on the client. I have tried playing around with the get_element, however I cannot get it to work. I cannot use the client side Findcontrol, as I do not know the Id of the child control, I want to loop through the collection of child controls to a node and enable/disable using javascript on the client.

I Hope someone got an idea of how to do this

1 Answer, 1 is accepted

Sort by
0
Simon
Telerik team
answered on 20 Apr 2009, 08:55 AM
Hello Thomas Kristensen,

There are various ways of finding the client-side objects of the Templated controls.

One possible solution would be to set the client Id of each control in the Template as an attribute to its containing Node. You could use the attribute later to get the client-side object of the respective control and enable/disable it.

Below is the code of a simple example illustrating this approach:

<body> 
    <script type="text/javascript">  
 
        function toggleEnableNodes(enable) {  
            var treeView = $find("<%= RadTreeView1.ClientID %>");  
 
            var node = treeView.get_nodes().getNode(0);  
 
            var comboBoxId = node.get_attributes().getAttribute("comboBoxId");  
 
            var comboBox = $find(comboBoxId);  
 
            if (enable) {  
                node.enable();  
                comboBox.enable();  
            }  
            else {  
                node.disable();  
                comboBox.disable();  
            }  
        }  
      
    </script> 
    <form id="form1" runat="server">  
        <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
        <div> 
            <telerik:RadTreeView ID="RadTreeView1" runat="server"></telerik:RadTreeView> 
            <input type="button" onclick="return toggleEnableNodes(false);" value="disable root node" /> 
            <input type="button" onclick="return toggleEnableNodes(true);" value="enable root node" /> 
        </div> 
    </form> 
</body> 

protected void Page_Load(object sender, EventArgs e)  
{  
    RadTreeNode node = new RadTreeNode("root");  
    node.Expanded = true;  
    this.RadTreeView1.Nodes.Add(node);  
 
    RadComboBox comboBox = new RadComboBox();  
    comboBox.Items.Add(new RadComboBoxItem("item 1"));  
    comboBox.Items.Add(new RadComboBoxItem("item 2"));  
    comboBox.Items.Add(new RadComboBoxItem("item 3"));  
 
    node.Controls.Add(comboBox);  
 
    node.Attributes["comboBoxId"] = comboBox.ClientID;  
 
    node = new RadTreeNode("child 1");  
    this.RadTreeView1.Nodes[0].Nodes.Add(node);  
    node = new RadTreeNode("child 2");  
    this.RadTreeView1.Nodes[0].Nodes.Add(node);  

Kind regards,
Simon
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
Tags
TreeView
Asked by
Thomas Kristensen
Top achievements
Rank 1
Answers by
Simon
Telerik team
Share this question
or