I discovered that RadTreeView findControl only works in finding Telerik controls in a NodeTemplate, but does not work when trying to find an ASP control embedded in a NodeTemplate. This forced me to change my NodeTemplate column from <asp:dropdownlist> to <telerik:RadDropDownList>. I dynamically add values to the dropdownlist server side in NodeDataBound (see code below). This worked great with <asp:dropdownlist> but with <telerik:RadDropDownList> there are several issues: 1) values aren't displaying in the dropdownlist, 2) it appears there is a dropdown behind a dropdown, 3) dropdownlist width is incorrect. I've attached an image showing RadTreeView using <telerik:RadDropDownList> versus <asp:dropdownlist>. I want the solution using <telerik:RadDropDownList> to look exactly as it does using <asp:dropdownlist>. Assistance in resolving this issue would be appreciated. We are using Telerik Runtime Version v4.0.30319. Thanks.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebFormRadDDL.aspx.cs" Inherits="WebApplication2.WebFormRadDDL" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title><!--Commenting out style stuff does not improve issues with RadDropDownList--><!--The style section below overrides Telerik skin to reduce the spacing between tree nodes. Added background and border attributes to remove highlighting when selecting or mousing over a node.--><style type="text/css"> div.RadTreeView { line-height: 16px !important; } div.RadTreeView .rtSp { height: 14px !important; } div.RadTreeView .rtHover .rtIn, div.RadTreeView .rtSelected .rtIn { background: none !important; border: none !important; padding: 1px 2px 1px !important; } div.RadTreeView .rtIn { padding: 1px 2px 1px !important; } </style></head><body> <form id="form1" runat="server"> <div> <telerik:RadScriptManager runat="server" ID="RadScriptManager1" /> <telerik:RadTreeView ID="RadTreeView1" runat="server" AutoGenerateColumns="False" OnNodeDataBound="RadTreeView1_NodeDataBound" OnNodeCreated="RadTreeView1_NodeCreated" DataFieldID="Node" DataFieldParentID="ParentNode" DataTextField="ParentNode" DataValueField="Description" Skin="Web20"> <NodeTemplate> <!-- don't make cellspacing too big or it messes with ddl activation--> <table cellspacing="10px"> <tr> <td> <asp:Label runat="server" ID="lbl" Text='<%# DataBinder.Eval(Container, "Value") %>'></asp:Label> </td> <td></td> <td> <telerik:RadDropDownList ID="ddl" runat="server" DropDownHeight="15px" DropDownWidth="20px" Font-Size="10px" Enabled="true"> </telerik:RadDropDownList> </td> </tr> </table> </NodeTemplate> </telerik:RadTreeView> </div> </form></body></html> protected void RadTreeView1_NodeDataBound(object sender, RadTreeNodeEventArgs e) { DataRowView item = e.Node.DataItem as DataRowView; string bold = item["Bold"].ToString(); string validResponses = item["ValidResponses"].ToString(); string responseRequired = item["ResponseRequired"].ToString() ; //RadTreeNode node = RadTreeView1.Nodes[0]; RadDropDownList ddl = (RadDropDownList)e.Node.FindControl("ddl"); Label lbl = (Label)e.Node.FindControl("lbl"); if (bold == "Y") { lbl.Font.Bold = true; } if (responseRequired == "N") { ddl.Visible = false; } else { Array responses = validResponses.Split('|'); ddl.Items.Add(new DropDownListItem("", "")); foreach (string response in responses) { DropDownListItem ddlItem = new DropDownListItem(response, response); ddl.Items.Add(ddlItem); } } }