Tuesday, 12 December 2017

Multilevel CheckBoxes



http://www.lidorsystems.com/support/articles/treeview-threestate.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function myPostBack() {
            var o = window.event.srcElement;
            if (o.tagName == "INPUT" && o.type == "checkbox") {
                __doPostBack("", "");
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <table>
            <tr>
                <td colspan="2">
                    <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
                        <asp:ListItem Text="a" Value="a" />
                        <asp:ListItem Text="b" Value="b" />
                        <asp:ListItem Text="c" Value="c" />
                        <asp:ListItem Text="d" Value="d" />
                        <asp:ListItem Text="e" Value="e" />
                    </asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple"></asp:ListBox>
                </td>
                <td>
                    <asp:Button ID="Button1" runat="server" Text="Remove" OnClick="Button1_Click" />
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <asp:TreeView ID="TreeView1" runat="server"  OnClick="myPostBack();" ShowCheckBoxes="All" OnTreeNodeCheckChanged="TreeView1_TreeNodeCheckChanged">
                    </asp:TreeView>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
public partial class listbox : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                TreeView1.Nodes.Add(new TreeNode("Fruits", "Fruits"));
                TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("Mango", "Mango"));
                TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("Apple", "Apple"));
                TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("Pineapple", "Pineapple"));
                TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("Orange", "Orange"));
                TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("Grapes", "Grapes"));
                TreeView1.Nodes.Add(new TreeNode("Vegetables", "Vegetables"));
                TreeView1.Nodes[1].ChildNodes.Add(new TreeNode("Carrot", "Carrot"));
                TreeView1.Nodes[1].ChildNodes.Add(new TreeNode("Cauliflower", "Cauliflower"));
                TreeView1.Nodes[1].ChildNodes.Add(new TreeNode("Potato", "Potato"));
                TreeView1.Nodes[1].ChildNodes.Add(new TreeNode("Tomato", "Tomato"));
                TreeView1.Nodes[1].ChildNodes.Add(new TreeNode("Onion", "Onion"));
            }
        }
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListBox1.Items.Add(DropDownList1.SelectedValue);
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            List<ListItem> deletedItems = new List<ListItem>();
            foreach (ListItem item in ListBox1.Items)
            {
                if (item.Selected)
                {
                    deletedItems.Add(item);
                }
            }
            if(deletedItems.Count>0)
            {
                foreach (ListItem item in deletedItems)
                {
                    ListBox1.Items.Remove(item);
                }
            }
            else
            {
                Response.Write("Please select an Item to delete");
            }
           
        }
        protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
            if (e != null && e.Node != null)
            {
                if (e.Node.ChildNodes.Count > 0)
                {
                    CheckTreeNodeRecursive(e.Node, e.Node.Checked);
                }
            }
        }
        private void CheckTreeNodeRecursive(TreeNode parent, bool fCheck)
        {
            foreach (TreeNode child in parent.ChildNodes)
            {
                if (child.Checked != fCheck)
                {
                    child.Checked = fCheck;
                }
                if (child.ChildNodes.Count > 0)
                {
                    CheckTreeNodeRecursive(child, fCheck);
                }
            }
        }
    }

No comments:

Post a Comment