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

Pulldown checkbox menu

1 Answer 104 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Sasa
Top achievements
Rank 1
Sasa asked on 10 Sep 2008, 08:50 PM
I am trying to recreate the pulldown checkbox menu as seen in your parameterized report lesson outside the viewer...  Could you please let me know how to recreate it?  Thank you. 

1 Answer, 1 is accepted

Sort by
0
Sasa
Top achievements
Rank 1
answered on 19 Sep 2008, 03:44 PM
I think that the below listed code will be sufficient. It will use extend functionality out of a separate class... What do you all think?

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

        {

            get

            {

                if (ViewState["Children"] == null)

                    return ("");

 

                return ((string)ViewState["Children"]);

            }

            set

            {

                ViewState["Children"] = value;

            }

        }

 

        [Bindable(true)]

        [Category("Appearance")]

        [DefaultValue("Extending the DropDown control")]

        [Localizable(true)]

        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);

            m_TreeView.Nodes.Add(oNode);

            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);

        }

 

        [

        Category("Action"),

        Description("Raised when the user collapses the treeview.")

        ]

        protected void m_TreeView_TreeNodeCollapsed(object sender, TreeNodeEventArgs e)

        {

            BuildLabel(m_TreeView, m_Label);

        }

 

        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();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            m_Label.RenderControl(writer);

            writer.RenderEndTag();           

            writer.RenderEndTag();

                       

            writer.RenderEndTag();

        }

 

    }

}

 

Tags
General Discussions
Asked by
Sasa
Top achievements
Rank 1
Answers by
Sasa
Top achievements
Rank 1
Share this question
or