TreeView 用法(有代码)

前台代码
<script type="text/javascript">
        //客户端捕捉事件
        function CheckEvent() {
            var objNode = event.srcElement;
            if (objNode.tagName == "INPUT" && objNode.type == "checkbox") {
                var objParentDiv = objNode.id.replace("CheckBox", "Nodes");
                if (objNode.checked == true) {
                    setChildCheckState(objParentDiv, true);

                    setParentCheckeState(objNode, true);
                }
                else {
                    setChildCheckState(objParentDiv, false);

                    if (!HasOtherChecked(objNode)) {
                        setParentCheckeState(objNode, false);
                    }
                }
            }
        }

        //判断是否有并行的其他节点被选中
        function HasOtherChecked(objNode) {
            var objParentDiv = WebForm_GetParentByTagName(objNode, "div");

            var chks = objParentDiv.getElementsByTagName("INPUT");
            for (var i = 0; i < chks.length; i++) {
                if (chks[i].checked && chks[i].id != objNode.id) {
                    return true;
                }
            }
            return false;
        }

        //设置父节点
        function setParentCheckeState(objNode, chkstate) {
            try {
                var objParentDiv = WebForm_GetParentByTagName(objNode, "div");

                if (objParentDiv == null || objParentDiv == "undefined ") {
                    return;
                }
                else {
                    var objParentChkId = objParentDiv.id.replace("Nodes", "CheckBox");
                    var objParentCheckBox = document.getElementById(objParentChkId);

                    if (objParentCheckBox) {
                        objParentCheckBox.checked = chkstate;
                        setParentCheckeState(objParentDiv, chkstate);
                    }
                }
            }
            catch (e) { }
        }

        //设置子节点
        function setChildCheckState(nodeid, chkstate) {
            var node = document.getElementById(nodeid);

            if (node) {
                var chks = node.getElementsByTagName("INPUT");
                for (var i = 0; i < chks.length; i++) {
                    chks[i].checked = chkstate;
                }
            }
        } 
    </script>



<body>
    <form id="form1" runat="server">
               <asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" onclick="CheckEvent()">
                </asp:TreeView>
    
    </form>
</body>
后台代码:
private void BindGrid()
{
DataTable mytable
= menuTableBll.GetAllList().Tables[0]; //获取数据

CreateTree(mytable, TreeView1.Nodes,
"0");
}
private void CreateTree(DataTable dtNodeSets, TreeNodeCollection node, string parent_id)
{
DataView dvList
= new DataView(dtNodeSets);
dvList.RowFilter
= "MeunParentId =" + parent_id;

TreeNode nodeTemp;
foreach (DataRowView dv in dvList)
{
nodeTemp
= new TreeNode();
nodeTemp.Text
= dv["MenuName"].ToString();
nodeTemp.Expanded
= true;
nodeTemp.ToolTip
= dv["MeunId"].ToString();


node.Add(nodeTemp);
CreateTree(dtNodeSets, nodeTemp.ChildNodes, dv[
"MeunId"].ToString());
}
}
posted on 2011-07-05 09:07  张扬个性,敢为天下先  阅读(627)  评论(0编辑  收藏  举报