TreeView 控件 Checkbox 级联选择

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        var TreeViewControl;            /*var TreeVieMultipleSelect=true;*/
        var TreeInitialize = false;
        function CheckChildNodes(checkBox) {
            var checked = checkBox.checked;
            var layer = document.getElementById(checkBox.id.substring(0, checkBox.id.lastIndexOf("CheckBox")) + "Nodes");
            if (layer)
                SetControlsChecked(layer.children, checked);
            SetParentNodeChecked(checkBox);
        }
        function SetParentNodeChecked(checkBox) {
            var regExp = new RegExp(TreeViewControl.id + "n[\\d]*Nodes");
            if (checkBox.checked) {
                SetParentCheckBoxChecked(checkBox);
                return;
            }
            var cellIndex = checkBox.parentNode.cellIndex;
            for (var layer = checkBox; layer.id != TreeViewControl.id; layer = layer.parentNode) {
                if (!regExp.test(layer.id)) continue;
                for (var i = 0; i < layer.children.length; i++) {
                    var table = layer.children[i]; if (table.nodeName.toLowerCase() != "table")
                        continue;
                    if (table.rows[0].cells[cellIndex].children[0].checked) return;
                }
                checkBox = document.getElementById(layer.id.substring(0, layer.id.lastIndexOf("Nodes")) + "CheckBox");
                checkBox.checked = false; cellIndex = checkBox.parentNode.cellIndex;
            }
        }
        function SetParentCheckBoxChecked(checkBox) {
            var regExp = new RegExp(TreeViewControl.id + "n[\\d]*Nodes");
            for (var layer = checkBox.parentNode; layer.id != TreeViewControl.id; layer = layer.parentNode) {
                if (!regExp.test(layer.id)) continue;
                parentCheckBox = document.getElementById(layer.id.substring(0, layer.id.lastIndexOf("Nodes")) + "CheckBox");
                parentCheckBox.checked = checkBox.checked;
            }
        }
        function SetControlsChecked(controls, checked) {
            for (var i = 0; i < controls.length; i++) {
                controls[i].checked = checked; SetControlsChecked(controls[i].children, checked);
            }
        }
        function CheckTree(tree) {
            TreeViewControl = tree;
            if (tree.MultipleSelect == null) tree.MultipleSelect = true;
            else tree.MultipleSelect = eval(tree.MultipleSelect.toString().toLocaleLowerCase());
            if (!TreeInitialize) {
                InitializeTree(tree, tree.children);
                TreeInitialize = true;
            }
            CheckNode(tree);
        }
        function CheckNode(checkBox/*tree*/) {
            if (TreeViewControl.MultipleSelect) {
                CheckChildNodes(checkBox); return;
            }
            ClearSelection(TreeViewControl.children, checkBox.id);
        }
        function ClearSelection(controls, checkBoxID) {
            for (var i = 0; i < controls.length; i++) {
                if (controls[i].id != checkBoxID) controls[i].checked = false;
                ClearSelection(controls[i].children, checkBoxID);
            }
        }
        function InitializeTree(tree, controls) {
            var regExp = new RegExp(tree.id + "n[\\d]*CheckBox");
            for (var i = 0; i < controls.length; i++) {
                var checkBox = controls[i];
                if (regExp.test(checkBox.id)) checkBox.onclick = function () {
                    CheckNode(this)
                };
                InitializeTree(tree, checkBox.children);
            }
        }           
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" OnClick="CheckTree(this)">
        </asp:TreeView>
    </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                for (int i = 0; i < 5; i++)
                {
                    TreeNode masterNode = new TreeNode(i.ToString()); TreeView1.Nodes.Add(masterNode);
                    for (int j = 0; j < 5; j++)
                    {
                        TreeNode childNode = new TreeNode(j.ToString()); masterNode.Expanded = false; masterNode.ChildNodes.Add(childNode);
                    }
                }
            }
        }
    }
}

 

private string FilterByDeptCode(string ids, string codes)
{
List<string> codeList = codes.Split(',').ToList();
List<string> idList = ids.Split(',').ToList();
for (int i = 0; i < codeList.Count - 1; i++)
{
for (int y = idList.Count - 1; y > i; y--)
{
if (codeList[y].StartsWith(codeList[i]))
{
idList.RemoveAt(y);
}
}
}
if (idList.Count > 0)
return string.Join(",", idList);
return string.Empty;
}

 

select ' or DepartmentCode like ''' + cast(DepartmentCode as varchar) + '%''' from
TBasCorpRight inner  join TBasDepartment on TBasDepartment.DepartmentID=TBasCorpRight.DepartmentID 

 

 

posted @ 2011-02-11 16:20  geass..  阅读(923)  评论(1编辑  收藏