Product Bundles
DevCraft
All Telerik .NET and Kendo UI JavaScript components and AI Tools in one package.
Kendo UI
Bundle of AI Tools plus four JavaScript UI libraries built natively for jQuery, Angular, React and Vue.
Telerik
Build great .NET business apps
.Net Web
Cross-Platform
Desktop
Reporting and Documents
Testing & Mocking
Debugging
Build JavaScript UI
Javascript
AI for Developers & IT
Ensure AI program success
AI Coding
Additional Tools
Enhance the developer and designer experience
UI/UX Tools
Free Tools
CMS
Support and Learning
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Security.Permissions;
using System.Collections;
namespace CPDropDownExt
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:DropDown1 runat=\"server\"> </{0}:DropDown1>")]
public class DropDown1 : CompositeControl
private TreeView m_TreeView;
private Label m_Label;
private ArrayList aItems = new ArrayList();
private ArrayList aSelectedItems = new ArrayList();
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("Extending the DropDown control")]
[Localizable(true)]
public virtual String Title
get
if (ViewState["Title"] == null)
return ("No Title");
return ((string)ViewState["Title"]);
}
set
ViewState["Title"] = value;
public string Children
if (ViewState["Children"] == null)
return ("");
return ((string)ViewState["Children"]);
ViewState["Children"] = value;
public void Items(ArrayList aList)
aItems = aList;
for (int i = 0; i < aItems.Count; i++)
TreeNode oNode = new TreeNode(aItems[i].ToString());
m_TreeView.Nodes.Add(oNode);
public ArrayList GetSelectedItems()
return (aSelectedItems);
protected override void CreateChildControls()
m_TreeView = new TreeView();
m_TreeView.ExpandImageUrl = "~/images/dropdown.gif";
m_TreeView.CollapseImageUrl = "~/images/dropdown.gif";
m_TreeView.ShowCheckBoxes = TreeNodeTypes.Leaf;
m_TreeView.ForeColor = Color.Black;
m_TreeView.TreeNodeCheckChanged += new TreeNodeEventHandler(m_TreeView_TreeNodeCheckChanged);
m_TreeView.TreeNodeCollapsed += new TreeNodeEventHandler(m_TreeView_TreeNodeCollapsed);
m_Label = new Label();
TreeNode oNode = new TreeNode(Title);
if ( Children.Length > 0 )
ArrayList aChildren = GetChildren(Children);
for (int t = 0; t < aChildren.Count; t++)
TreeNode oNodeSub = new TreeNode(aChildren[t].ToString());
oNode.ChildNodes.Add(oNodeSub);
this.Controls.Add(m_TreeView);
this.Controls.Add(m_Label);
private ArrayList GetChildren(string sChild)
ArrayList oArray = new ArrayList();
while (sChild.IndexOf(",") != -1)
int len = sChild.IndexOf(",");
string sTemp = sChild.Substring(0, len);
oArray.Add(sTemp);
sChild = sChild.Substring(len + 1);
oArray.Add(sChild);
return (oArray);
protected override void OnPreRender(EventArgs e)
base.OnPreRender(e);
/*if (Page != null)
Page.RegisterRequiresPostBack(this);
* */
[
Category("Action"),
Description("Raised when the user checks.")
]
protected void m_TreeView_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
BuildLabel(m_TreeView, m_Label);
Description("Raised when the user collapses the treeview.")
protected void m_TreeView_TreeNodeCollapsed(object sender, TreeNodeEventArgs e)
private void BuildLabel(TreeView oView, Label oLabel)
aSelectedItems.Clear();
oLabel.Text = "";
for (int i = 0; i < oView.Nodes.Count; i++)
for (int j = 0; j < oView.Nodes[i].ChildNodes.Count; j++)
if (oView.Nodes[i].ChildNodes[j].Checked == true)
if (oLabel.Text.Length > 0)
oLabel.Text += ",";
oLabel.Text += oView.Nodes[i].ChildNodes[j].Text;
aSelectedItems.Add(oView.Nodes[i].ChildNodes[j].Text);
protected override void Render(HtmlTextWriter writer)
AddAttributesToRender(writer);
writer.AddAttribute(
HtmlTextWriterAttribute.Cellpadding,
"1", false);
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
m_TreeView.RenderControl(writer);
writer.RenderEndTag();
m_Label.RenderControl(writer);