Product Bundles
DevCraft
All Telerik .NET tools and Kendo UI JavaScript components in one package. Now enhanced with:
Web
Mobile
Document Management
Desktop
Reporting
Testing & Mocking
CMS
UI/UX Tools
Debugging
Free Tools
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);